1 回答
TA贡献1890条经验 获得超9个赞
json.Marshal()将给定的值编组为 JSON(并将其作为 a 返回[]byte),因此您拥有的内容s是u保存输入 JSON 文本的 JSON 文本。附加(连接)这两个文本甚至不会产生有效的 JSON,显然不是你想要的。
您的输入是 JSON 文本,包含一个 JSON 数组。因此,您应该做的是将您的输入解组为 Go 切片(类型为[]interface{}),您可以附加这些切片,然后将结果编组回 JSON。
像这样的东西:
superset := `[{"id": 1231, "name": "testing1"},{"id": 1235, "name": "testing2"}]`
subset := `[{"id": 1237, "name": "testing3"}]`
var s1, s2 []interface{}
if err := json.Unmarshal([]byte(superset), &s1); err != nil {
panic(err)
}
if err := json.Unmarshal([]byte(subset), &s2); err != nil {
panic(err)
}
s2 = append(s2, s1...)
result, err := json.Marshal(s2)
if err != nil {
panic(err)
}
fmt.Println(string(result))
这个输出(在Go Playground上试试):
[{"id":1237,"name":"testing3"},{"id":1231,"name":"testing1"},{"id":1235,"name":"testing2"}]
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报