2 回答
TA贡献1851条经验 获得超3个赞
对于消息容器,即
message Containers {
repeated Container containers = 1;
}
正确的JSON 应如下所示:
{
"containers" : [
{
"name": "C1",
"type": "docker"
},
{
"name": "C2",
"type": "docker"
}
]
}
如果您无法更改 JSON,那么您可以使用您创建的 func
func working(data string) ([]*Container, error) {
var cs []*Container
err := json.Unmarshal([]byte(data), &cs)
// handle the error here
return &Containers{
containers: cs,
}, nil
}
TA贡献1797条经验 获得超6个赞
您应该使用NewDecoder将数据传输到jsonDecoder然后遍历数组。代码是这样的
func main() {
data := `
[
{
"name": "C1",
"type": "docker"
},
{
"name": "C2",
"type": "docker"
}
]`
jsonDecoder := json.NewDecoder(strings.NewReader(data))
_, err := jsonDecoder.Token()
if err != nil {
log.Fatal(err)
}
var protoMessages []*pb.Container
for jsonDecoder.More() {
protoMessage := pb.Container{}
err := jsonpb.UnmarshalNext(jsonDecoder, &protoMessage)
if err != nil {
log.Fatal(err)
}
protoMessages = append(protoMessages, &protoMessage)
}
fmt.Println("%s", protoMessages)
}
- 2 回答
- 0 关注
- 284 浏览
添加回答
举报