可以使用标准库中的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{}类型,并访问其中的元素。

golang 把深层次的json字符串转成map 并读取数据

原文地址: https://www.cveoy.top/t/topic/INC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录