03-go语言 go练习-golang中struct、json、map互相转化

赫连瑾瑜
2023-12-01

原文:https://blog.csdn.net/xiaoquantouer/article/details/80233177

一、Json和struct互换

二、json和map互转

(1)json转map例子:

func JsonToMapDemo(){
        jsonStr := `
        {
                "name": "jqw",
                "age": 18
        }
        `
        var mapResult map[string]interface{}
        err := json.Unmarshal([]byte(jsonStr), &mapResult)
        if err != nil {
                fmt.Println("JsonToMapDemo err: ", err)
        }
        fmt.Println(mapResult)
}

(2)map转Json例子

func MapToJsonDemo1(){
        mapInstances := []map[string]interface{}{}
        instance_1 := map[string]interface{}{"name": "John", "age": 10}
        instance_2 := map[string]interface{}{"name": "Alex", "age": 12}
        mapInstances = append(mapInstances, instance_1, instance_2)
 
        jsonStr, err := json.Marshal(mapInstances)
 
        if err != nil {
                fmt.Println("MapToJsonDemo err: ", err)
        }
        fmt.Println(string(jsonStr))
}
func MapToJsonDemo2(){
        b, _ := json.Marshal(map[string]int{"test":1, "try":2})
        fmt.Println(string(b))
}

三、map和struct互转

四、多级map的key

// 我们使用的数据为json后的map, 内容与上面展示的完全相同,所以需要先从json解析到map
        cityInfo := "{\"status\": 0,\"result\": {\"location\": {\"lat\": 39.88,\"lng\": 118.69},\"address\": \"河北省唐山市迁安市京哈高速公路\",\"address_component\": {\"nation\": \"中国\",\"province\": \"河北省\",\"city\": \"唐山市\",\"district\": \"迁安市\",\"street\": \"京哈高速公路\",\"street_number\": \"京哈高速公路\"}}}"
	fmt.Println(cityInfo)
	cityInfoMap := util.JSONToMap(cityInfo)
	fmt.Println(cityInfoMap)
	cityName, ok := cityInfoMap["result"].(map[string]interface{})["address_component"].(map[string]interface{})["district"]
	fmt.Println(cityName)   // 这里会输出迁安市, 取到对应的值,OK

原文:https://www.cnblogs.com/lz0925/p/11882939.html

五 复杂json处理思路
原文1:https://blog.csdn.net/kevin_tech/article/details/105213359
原文2:https://blog.csdn.net/qq_37362891/article/details/103783674

 类似资料: