golang 把深层次的json字符串转成map 并读取数据
可以使用标准库中的json包来解析json字符串并转换成map对象。
以下是一个示例代码:
package main
import (
"encoding/json"
"fmt"
)
func main() {
jsonStr := `{
"name": "John",
"age": 30,
"address": {
"city": "New York",
"state": "NY",
"zip": "10001"
},
"phone": [
{
"type": "home",
"number": "123-456-7890"
},
{
"type": "work",
"number": "456-789-0123"
}
]
}`
var data map[string]interface{}
err := json.Unmarshal([]byte(jsonStr), &data)
if err != nil {
panic(err)
}
fmt.Println(data["name"].(string))
fmt.Println(data["age"].(float64))
fmt.Println(data["address"].(map[string]interface{})["city"].(string))
fmt.Println(data["phone"].([]interface{})[0].(map[string]interface{})["number"].(string))
}
解析过程中,需要定义一个map变量来存储json数据,类型为map[string]interface{},其中key为string类型,value为interface{}类型,可以存储任意类型的数据。然后使用json.Unamrshal函数来解析json字符串,并将解析后的数据存储到map变量中。
读取数据时,可以通过map变量中的key来获取对应的value,如果value是一个嵌套的map对象,可以使用类型断言来将value转换成map[string]interface{}类型,并继续访问其内部的数据。如果value是一个数组,可以使用类型断言将value转换成[]interface{}类型,并访问其中的元素。
原文地址: https://www.cveoy.top/t/topic/INC 著作权归作者所有。请勿转载和采集!