在 Go 中使用 JSON Marshal 的小写 JSON 键名

新手上路,请多包涵

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

例如。:

 type T struct {
    Foo int
}

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

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

将导致

{“富”:42}

但我希望得到

{“富”:42}

是否有可能以某种简单的方式解决这个问题?

原文由 ANisus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 693
2 个回答

查看 encoding/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"
}

原文由 jimt 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用要导出的键创建自己的结构,并为它们提供适合小写名称的 json 标签。然后您可以将所需的结构复制到您的结构中,然后再将其编码为 JSON。或者,如果您不想费心制作本地结构,您可以制作一个 map[string]interface{} 并对其进行编码。

原文由 Lily Ballard 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题