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

我如何在 golang 中定义这种类型的数据

我如何在 golang 中定义这种类型的数据

Go
慕莱坞森 2021-12-20 19:29:21
我有一个类似的数据'{"{\"hello\":\"world\"}"}',它是 postgresql 中的数组 json。我不知道如何在 golang 中处理它。我知道我可以定义 with stringthen use json.Unmarshalto slove,但我想知道是否有办法让它在struct
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

我假设你发布了不正确的 JSON,假设它是'{"hello": "world"} 一个具有预定义字段的结构,并且任意 JSON 进入它是不可能提前知道的。可能的解决方案是将其转换为地图。


var data interface{}

b := []byte(`{"hello": "world"}`)

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

if err != nil {

        panic(err)

}

fmt.Print(data)

当您打印出数据时,您可能会得到类似的信息。 map[hello:world]


其形式为map[string]interface{}.


然后您可以使用类型 switch 循环到映射结构中,直到您输入 assert所有interface{}.


for k, v := range data.(map[string]interface{}) {

        switch val := v.(type) {

        case string:

                v = val

        default:

                fmt.Println(k, "is unknown type")

        }

}

在处理任意传入的 JSON 时,Map 是一种理想的数据结构。但是,如果 JSON 是从具有预定义架构的 SQL 表生成的,您可以使用具有相同结构的结构而不是映射。


type Hello struct {

        Hello string `json:"hello"`

}


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

添加回答

举报

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