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

json 解组通用接口{}

json 解组通用接口{}

Go
小怪兽爱吃肉 2021-12-07 09:27:02
http://blog.golang.org/json-and-gom := j.(map[string]interface{}) 对我不起作用panic: interface conversion: interface {} is []interface {}, not map[string]interface {}所以我最终会用这样的代码来使它工作?不要认为这是正确的做法:)    var j interface{}    err = json.Unmarshal(b, &j)    if err != nil {        log.Print(err.Error())    }    m := j.([]interface{}) //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 []interface{}:            fmt.Println(k, "is an array:")            for i, u := range vv {                fmt.Println(i, u)            }        case map[string]interface{}:            for k2, v2 := range v.(map[string]interface{}) {                switch vv2 := v2.(type) {                case string:                    fmt.Println(k2, "is string", vv2)                case int:                    fmt.Println(k2, "is int", vv2)                case []interface{}:                    fmt.Println(k2, "is an array:")                    for i2, u2 := range vv2 {                        fmt.Println(i2, u2)                    }                default:                    fmt.Println(k2, "is of a type I don't know how to handle")                }            }        default:            fmt.Println(k, "is of a type I don't know how to handle")        }    }
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

JSON 代码的根部分似乎是一个 JSON 数组(["item", "item", {"key": "value"}]符号)。尽管一些 JSON 库不喜欢它,但 JSON blob 的“根”可以是数组而不是对象({"key": "value"}符号)。


在生产应用程序中,您应该使用类型断言的第二个值来确保它是正确的类型:


m, mOk := j.(map[string]interface{})

s, sOk := j.([]interface{})


if mOk {

    // Use Map

} else {

    // Use Slice

}

如果您不需要编辑数据,Jason是一个很棒的 Go 库。


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信