使用 JSON 时,可能会出现在解组过程中需要区分大小写处理的情况。然而,Go 中的标准 JSON 库会优先考虑不区分大小写的匹配,这可能会导致意外的行为。
根据官方文档,在解组期间,传入的 JSON 键是与结构字段名称或标签进行比较。该库更喜欢精确匹配,但也容忍不区分大小写的匹配。例如,如果您收到包含“e”和“E”等键的 JSON,并且希望仅解组“e”变体,这可能会导致冲突。
遗憾的是,标准 JSON 库目前没有提供一种简单的机制来禁用不区分大小写的解组。 https://golang.org/pkg/encoding/json/#Unmarshal 上的文档明确指出:
“Unmarshal 将传入对象键与 Marshal 使用的键(结构体字段名称或其标签)进行匹配,更喜欢完全匹配,但也接受不区分大小写的匹配。”
自标准库以来不提供开箱即用的解决方案,一种可能的解决方法是通过扩展encoding/json 包来创建自定义 JSON 解码器。该解码器可以实现字段级区分大小写的解组机制,忽略具有不同大小写的标签。
以上是如何在 Go 中实现区分大小写的 JSON 解组?的详细内容。更多信息请关注PHP中文网其他相关文章!