我在golang中创建一个json响应。我有一个问题,我能够生成一个json,如:
{
"Name" : "Country",
"Value" : "abc"
}
名称和值的值可以根据用户而改变,我使用的结构如下:
type xAxis struct {
Name string,
Value string
}
我希望我的json看起来像这样:
{
"Country" : "abc"
}
是否可以像这样创建json?
答案 0 :(得分:2)
您可以通过编写自定义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})
}
答案 1 :(得分:0)
encoding/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]