gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:42:32 24 4
gpt4 key购买 nike

我有一个类似 '{"{\"hello\":\"world\"}"}' 的数据,它是postgresql中的数组json。

不知道golang怎么处理。我知道我可以用 string 定义然后使用 json.Unmarshal解决问题,但我想知道是否有办法在 struct 中获取它

最佳答案

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

var data interface{}
b := []byte(`{"hello": "world"}`)
err := json.Unmarshal(b, &data)
if err != nil {
panic(err)
}
fmt.Print(data)

当你打印出数据时,你可能会得到类似的东西。 map [你好:世界]

其形式为map[string]interface{}

然后您可以使用类型切换循环进入映射结构,直到您类型断言所有接口(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"`
}

关于arrays - 我如何在 golang 中定义这种类型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36042047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com