Go 如何从结构中创建json对象
我是golang的新手,我想创建一个json对象,如下所示:Go 如何从结构中创建json对象,go,Go,我是golang的新手,我想创建一个json对象,如下所示: { "name" : "animals", "children" : [ {"name":"dog", "value": 5}, {"name":"cat", "value": 4}, {"name":"fish", "value": 10} ] } 我想出的代码是: type Child struct { Name string
{
"name" : "animals",
"children" : [
{"name":"dog", "value": 5},
{"name":"cat", "value": 4},
{"name":"fish", "value": 10}
]
}
我想出的代码是:
type Child struct {
Name string
Value int
}
type DataMap struct {
Name string
Children []Child
}
m := DataMap{"animals", [{"cat": 5 }, {"dog": 4}, {"fish":10}] }
cj, _ := json.Marshal(m)
但我得到了一个错误:
syntax error: unexpected {, expecting expression
理想情况下,我希望在循环中将子项
切片附加到数据映射
,但我不知道如何做。
谢谢你的提示
type DataMap struct {
Name string
Children []map[string]int
}
无需将:
更改为,
还要注意,错误是编译时错误,而不是运行时错误
当我的json太大时,我使用的工具是struct,我希望struct中包含所有字段的引号 下面的代码
{"name":"dog", "value": 5},
{"name":"cat", "value": 4},
{"name":"fish", "value": 10}
如下
{"name":"dog", "value": "5"},
{"name":"cat", "value": "4"},
{"name":"fish", "value": "10"}
我希望这对u有帮助,因为您误解了结构初始化语法(因为有许多新的incomer),下面是一个示例:
package main
import (
"fmt"
"encoding/json"
)
type Child struct {
Name string
Value int
}
type DataMap struct {
Name string
Children []Child
}
func main() {
m := DataMap{"animals", []Child{{"cat", 5}, {"dog", 10 } } }
cj, _ := json.Marshal(m)
fmt.Printf("%s", cj)
}
在循环中:
package main
import (
"fmt"
"encoding/json"
)
type Child struct {
Name string
Value int
}
type DataMap struct {
Name string
Children []Child
}
func main() {
m := DataMap{"animals", []Child{}}
for _, item := range []Child{{"cat", 5}, {"dog", 10 }} {
m.Children = append(m.Children, item)
}
cj, _ := json.Marshal(m)
fmt.Printf("%s", cj)
}
在分配给
m
的行中,将所有:
替换为,
。这是一个普通的语法错误。仍然会得到相同的错误:和更多的普通语法错误。字段值应为int
和[…]
[]子项{…}
对不起,我需要值为int
。请看更新后的问题。再看一眼。谢谢你的提示。