Go中包含JSON Marshal的小写JSON键名如何实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我希望使用这个"encoding/json"包来编组在我的应用程序的一个导入包中声明的结构。

例如。:

type T struct {
    Foo int
}

由于它是导入的,因此结构中所有可用(导出)字段都以大写字母开头。但我希望有小写键名:

out, err := json.Marshal(&T{Foo: 42})

会导致

{ “foo”:42}

但我希望得到

{ “foo” 的:42}

是否有可能以一些简单的方式解决问题?

提问于
用户回答回答于

看看编码/ json.Marshal的文档。它讨论了使用struct字段标记来确定生成的json是如何格式化的。

例如:

type T struct {
    FieldA int    `json:"field_a"`
    FieldB string `json:"field_b,omitempty"`
}

这将生成JSON,如下所示:

{
    "field_a": 1234,
    "field_b": "foobar"
}
用户回答回答于

可以使用想要导出的键构建自己的结构,并为小写名称提供相应的json标记。然后,可以在将其编码为JSON之前将所需的结构复制到结构中。或者,如果你不想打扰一个本地结构,你可能会做一个map[string]interface{}编码。

扫码关注云+社区