看代码吧~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
func main() { a := []byte(`{"Parents": [ "aaaaa", "bbbbbbb" ]}`) b := []byte(`{"Parents": [ "Gomez", "Moticia" ]}`) var arr []interface{} js, _ := simplejson.NewJson(a) nodes, _ := js.Map() p := nodes["Parents"] d := p.([]interface{}) for _, v := range d { arr = append(arr, v) } js, _ = simplejson.NewJson(b) nodes, _ = js.Map() p = nodes["Parents"] d = p.([]interface{}) for _, v := range d { arr = append(arr, v) } res := make(map[string]interface{}) res["Parents"] = arr c, _ := json.Marshal(res) fmt.Println(string(c)) } |
结果:
{“Parents”:[“aaaaa”,”bbbbbbb”,”Gomez”,”Moticia”]}
相应的,如果数组里面是interface类型同样适用。
补充:go实现json数组嵌套
引用包 “encoding/json"
定义以下结构体
1
2
3
4
5
|
type person struct { Name string `json:"name"` Sex string `json:"sex"` Age string `json:"age"` } |
1
2
3
4
|
type test struct { Class int `json:"class"` Person []person `json:"person"` } |
创建实例如下
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class6 := `{ "class":6, "person":[{ "name":"wangha", "sex":"male", "age":"18" }, { "name":"zhang", "sex":"female", "age":"16" }] }` |
对class6进行解析
1
2
3
4
5
6
7
8
|
var keys test if err := json.Unmarshal([]byte(class6), &keys);err != nil{ fmt.Println(err) }else { fmt.Printf("%+v\n", keys) fmt.Printf("%+v\n", keys.Person[1]) fmt.Printf("%s\n", keys.Person[0].Sex) } |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/pingD/article/details/51692295