go json 解析到 map 类型
点赞
0

golang map json

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    jsonBuf := `
    {
    "company": "itcast",
    "subjects": [
        "Go",
        "C++",
        "Python",
        "Test"
    ],
    "isok": true,
    "price": 666.666
}`

    //创建一个 map 用于存放 json 数据
    m := make(map[string]interface{},4)

    err := json.Unmarshal([]byte(jsonBuf),&m)  //第二个参数要地址传递

    if err != nil{
        fmt.Println("err = ", err)
        return
    }

    fmt.Printf("m = %+v\n", m)

    for key,value := range m{
        fmt.Printf("%v ============> %v\n", key, value)
        fmt.Printf("key type ===> %T\n  value type ===>%T\n", key, value)
        switch data:= value.(type) {
        case string:
            fmt.Printf("map[%s]的值类型为string, value = %s\n", key, data)
        case bool:
            fmt.Printf("map[%s]的值类型为bool, value = %v\n", key, data)
        case float64:
            fmt.Printf("map[%s]的值类型为float64, value = %f\n", key, data)
        case []string:
            fmt.Printf("map[%s]的值类型为[]string, value = %v\n", key, data)
        case []interface{}:
            fmt.Printf("map[%s]的值类型为[]interface, value = %v\n", key, data)
        }
    }
}

相比前面的 json 解析到结构体,解析到 map 相对而已比较复杂,还需要通过类型 断言 的方式先把类型判断出来才能使用.这点是比较坑的.

评论数量: 0

游客 游客

0
点赞
138
浏览
0
评论

贡献 198
JeffreyBool
程序员是一条不归路,当我走上这条路我并不后悔,因为我认识了许多帮助我的朋友。热爱生活,热爱code!