JSON Unmarshal 结构区分大小写

Posted

技术标签:

【中文标题】JSON Unmarshal 结构区分大小写【英文标题】:JSON Unmarshal struct case-sensitively 【发布时间】:2018-08-06 22:43:00 【问题描述】:

有没有办法让 json.Unmarshal not 接受不区分大小写的匹配?我收到一个带有“e”和“E”等标签的 JSON,并想用标签“e”解组对象,但忽略带有“E”的对象。现在我找到的唯一解决方案是定义一个包含两个标签的结构,然后简单地忽略标签“E”,但我正在寻找一个更清洁的解决方案。

来自官方文档:

为了将 JSON 解组到结构中,Unmarshal 将传入的对象键与 Marshal 使用的键(结构字段名称或其标记)匹配,首选完全匹配但也接受不区分大小写的匹配。

【问题讨论】:

分叉和编辑 decode.go 以防止不区分大小写的匹配也是一种选择。 【参考方案1】:

很遗憾,标准 json 库目前不支持此功能。

根据https://golang.org/pkg/encoding/json/#Unmarshal

Unmarshal 将传入的对象键与 Marshal 使用的键(结构字段名称或其标记)匹配,首选完全匹配但也接受不区分大小写的匹配

无法关闭此行为。

【讨论】:

以上是关于JSON Unmarshal 结构区分大小写的主要内容,如果未能解决你的问题,请参考以下文章

javascript json字段 区分大小写吗

JSON Jquery 不区分大小写匹配

在 Snowflake 中使用不区分大小写的列名解析 JSON 数据

GSON:如何从 Json 中获取不区分大小写的元素?

不改变 POJO 的不区分大小写的 JSON 到 POJO 的映射

Laravel JSON where 子句不区分大小写