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

原文: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值