为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Go


// 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的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消