利用json.Unmarshal转json为map类型

package main

import (
	"encoding/json"
	"fmt"
)

func main() {

	var jsonStr = `{
    "name": "WQ",
    "age": 18,
    "phone": "15858585858"}` //key-value类型可以用struct/map接收
	var m = make(map[string]string)
	if err := json.Unmarshal([]byte(jsonStr), &m);err !=nil{
		fmt.Errorf("err:%v",err)
	}
	fmt.Printf("map:%v\n",m)
	for k,v :=range m{
		fmt.Printf("map,k:%v v:%v\n",k,v)
	}

	var jsonStr2 = `["WQ","18","15858585858"]`  //json中数组如果用Unmarshal解析的话对应切片数组,key-value则解析不到slice里面
	var slice = make([]string,3)
	if err := json.Unmarshal([]byte(jsonStr2), &slice);err !=nil{
		fmt.Errorf("err:%v",err)
	}
	fmt.Printf("slice:%v\n",slice)
	for k,v :=range slice{
		fmt.Printf("slice,k:%v v:%v\n",k,v)
	}
}
//总之Unmarshal接收容器可以是结构体、map、slice,json类型需要对应才,详见Unmarshal源码注释
//map:map[age: name:WQ phone:15858585858]
//map,k:age v:
//map,k:phone v:15858585858
//map,k:name v:WQ
//slice:[WQ 18 15858585858]
//slice,k:0 v:WQ
//slice,k:1 v:18
//slice,k:2 v:15858585858
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐