我可以在golang的json中使用用户定义的值作为数据类型吗
我正在golang中创建json响应。我有一个问题,我能够生成json,例如:我可以在golang的json中使用用户定义的值作为数据类型吗,json,go,Json,Go,我正在golang中创建json响应。我有一个问题,我能够生成json,例如: { "Name" : "Country", "Value" : "abc" } name和value的值可以根据用户和我使用的结构进行更改,如下所示: type xAxis struct { Name string, Value string } 我希望我的json如下所示: { "Country" : "abc" } 可以这样创建json吗?您可以通过编写自定义的MarshalJSON函
{
"Name" : "Country",
"Value" : "abc"
}
name和value的值可以根据用户和我使用的结构进行更改,如下所示:
type xAxis struct {
Name string,
Value string
}
我希望我的json如下所示:
{
"Country" : "abc"
}
可以这样创建json吗?您可以通过编写自定义的
MarshalJSON
函数来重写Go的json包封送结构的方式:
type xAxis struct {
Name string
Value string
}
func (a xAxis) MarshalJSON() ([]byte, error) {
return json.Marshal(map[string]interface{}{a.Name: a.Value})
}
尝试一下:编码/json包允许您使用映射而不是结构 这可能不如结构那么有效,但它确实有效
data := map[string]string {
"Country": "abc",
"Foo": "bar",
}
// Creating JSON from a map
j, err := json.Marshal(data)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(j))
// ==> {"Country":"abc","Foo":"bar"}
// Creating map from JSON
var data2 map[string]string
err = json.Unmarshal(j, &data2)
if err != nil {
log.Fatal(err)
}
fmt.Println(data2)
// ==> map[Country:abc Foo:bar]
非常感谢。它真的帮助了我。:)