继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

GO语言的json输入(反序列化)之interfac{}存储

holdtom
关注TA
已关注
手记 1846
粉丝 240
获赞 991


// code_032_json_unmarshal_to_interface project main.go

package main

import (

    "encoding/json"

    "fmt"

)

func main() {

    b := []byte(`{

        "company":"tianmei",

        "subjects":[

            "Go",

            "C++",

            "Python",

            "Test"  

        ],

        "isok":true,

        "price":666.666

    }`)

    //备注:subjects:["Test",]后面没有元素了,还有逗号会报错的。

    var t interface{}

    err := json.Unmarshal(b, &t)

    if err != nil {

        fmt.Println("json err:", err)

    }

    fmt.Println(t)

    //使用断言判断类型

    m := t.(map[string]interface{})

    for k, v := range m {

        switch vv := v.(type) {

        case string:

            fmt.Println(k, "is string", vv)

        case int:

            fmt.Println(k, "is int", vv)

        case float64:

            fmt.Println(k, "is float64", vv)

        case bool:

            fmt.Println(k, "is bool", vv)

        case []interface{}: //slice类型的元素为interface{}接收

            fmt.Println(k, "is an array:")

            for i, u := range vv {

                fmt.Println(i, u)

            }

        default:

            fmt.Println(k, "is of a type I don't know to handle")

        }

    }

}

©著作权归作者所有:来自51CTO博客作者ck_god的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP