Json数据的处理 动态key 动态字段

一般的用法可以参考https://www.cnblogs.com/yorkyang/p/8990570.htmlarrow-up-right

本文主要介绍json中动态字段 动态key的处理方法

例子一

json字段

{
    "friends": [
        {
            "id": 0,
            "name": "Robinson Woods"
        }
    ],
    "parent": [
        {
            "id": 1,
            "name": "Alejandra Mcdaniel"
        }
    ]
}

处理的方法,当成map来解析

package main
 
import (
	"encoding/json"
	"log"
)
 
func main() {
	data := `{
		"friends": [
			{
				"id": 0,
				"name": "Robinson Woods"
			}
		],
		"parent": [
			{
				"id": 1,
				"name": "Alejandra Mcdaniel"
			}
		]
	}`
	type User struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
	}
	dataMap := make(map[string][]User)
	json.Unmarshal([]byte(data), &dataMap)
	for k, v := range dataMap {
		log.Printf(`%v,%v`, k, v)
	}
}

例子二

处理的方法和例一类似

再补充一个例子

解析具有动态Key的对象

下面再做一下复杂的变化,如果把对象数组变为以FruitId作为属性名的复合对象(object of object)比如:

每个Key的名字在声明类型的时候是不知道值的,这样该怎么声明呢,答案是把Fruit字段的类型声明为一个Keystring类型值为Fruit类型的map

可以运行下面完整的代码段试一下。

最后更新于