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 结构区分大小写的主要内容,如果未能解决你的问题,请参考以下文章
在 Snowflake 中使用不区分大小写的列名解析 JSON 数据