JSON UNMARSHAL结构有敏感性



是否有任何方法可以使json.unmarshal 不接受案例不敏感的匹配?我收到一个带有" e"one_answers" e"之类的标签的JSON,并希望用标签" e"删除对象,但请忽略一个用" e"的对象。目前,我发现的唯一解决方案是定义一个包含标签的结构,然后简单地忽略标签" E",但我正在寻找一个更清洁的解决方案。

来自官方文档:

要将json放入结构中,将传入的对象键与元帅使用的键(结构字段名称或其标签(匹配,更喜欢确切的匹配,但也接受了对案例不敏感的匹配。

不幸的是,这不是标准JSON库当前支持的。

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

unarshal匹配传入的对象键与元帅使用的键(struct字段名称或其标签(,更喜欢确切的匹配,但也接受不敏感的匹配项

无法关闭此行为。

也可以添加具有特殊类型的字段,该字段忽略了jsonon umarshalling:

type JsonIgnored struct {}
func (j *JsonIgnored) UnmarshalJSON([]byte) error {
  return nil
}
type Message struct {
  Ignored JsonIgnored`json:"e"`
  EventId int64      `json:"E"`
}

最新更新