我希望使用"encoding/json"
包来封送在我的应用程序的一个导入包中声明的结构。
例如:
type T struct {
Foo int
}
因为它是导入的,所以结构中所有可用的(导出的)字段都以大写字母开头。但我希望密钥名称小写:
out, err := json.Marshal(&T{Foo: 42})
将导致
{"Foo":42}
但我希望能得到
{"foo":42}
有没有可能以一种简单的方式绕过这个问题?
发布于 2012-07-28 03:14:26
看一下encoding/json.Marshal的文档。它讨论了如何使用struct field标记来确定如何格式化生成的json。
例如:
type T struct {
FieldA int `json:"field_a"`
FieldB string `json:"field_b,omitempty"`
}
这将生成JSON,如下所示:
{
"field_a": 1234,
"field_b": "foobar"
}
发布于 2012-07-28 03:11:25
您可以使用要导出的键制作自己的struct,并为它们提供适当的小写名称的json标记。然后,您可以将所需的结构复制到您的结构中,然后再将其编码为JSON。或者,如果您不想麻烦地创建一个本地结构,您可以创建一个map[string]interface{}
并对其进行编码。
https://stackoverflow.com/questions/11693865
复制相似问题