gpt4 book ai didi

json - Go Lang 帮助 - 访问数组/接口(interface) slice

转载 作者:IT王子 更新时间:2023-10-29 01:58:47 25 4
gpt4 key购买 nike

我正在尝试使用嵌套数据在 GO 中解码动态/随机 JSON 响应

    body, _ := ioutil.ReadAll(response.Body)
resp := make(map[string]interface{})
err = json.Unmarshal(body, &resp)

fmt.Printf("BODY: %T<\n", body)
fmt.Printf("BODY: %s<\n", body)
fmt.Printf("RESP: %s<\n", resp)
fmt.Printf("RESP: %T<\n", resp)
fmt.Printf("RESP[results]: %T<\n", resp["results"])
fmt.Printf("RESP[results]: %s<\n", resp["results"])

正文是来自 HTTP 服务器的 JSON 结果,我对其进行解码,结果看起来是一段字节。

主体:[]uint8

正文:{“结果”:[{“代码”:500.0,“错误”:[“配置文件'c2-web-2.conf'已经存在。”],“状态”:“对象不能创建。”}]}

所以我将它解码为 resp 并且按预期工作。

RESP:映射[字符串]接口(interface){}

RESP: map [结果:[ map [代码:%!s(float64=500) 错误:[配置文件“c2-web-2.conf”已经存在。]状态:无法创建对象。]] ]<

我能够访问包含关键结果的 map 。

RESP[结果]:[]接口(interface){}

RESP[results]: [map[code:%!s(float64=500) errors:[Configuration file 'conf.d/hosts/c2-web-2.conf' already exists.] status:Object could not被创建。]]<

现在我想访问它的是 resp["results"] 中的“代码”、“错误”和“状态”这看起来像一个数组或 slice ,我已经尝试对其进行索引但我得到了错误在编译时

./create_host.go:62: invalid operation: resp["results"][0] (type interface {} 不支持索引)

我做了很多谷歌搜索,尝试在 resp["results"] 等中解码数据,但几天后我没有取得太大进展。

我应该如何访问似乎是数组成员的 map ?无法保证数据结构,因此我无法创建结构并将其解码。

谢谢

最佳答案

一位同事提供了下面的代码片段,可以访问我正在寻找的 map 条目。

    respBody, _ := ioutil.ReadAll(response.Body)

var rsp interface{}
if err := json.Unmarshal(respBody, &rsp); err != nil {
log.Fatal(err)
}
resultMap := rsp.(map[string]interface{})["results"].([]interface{})[0].(map[string]interface{})
fmt.Printf("test: %s<\n", resultMap["errors"] )

测试:[配置文件'c2-web-2.conf'已经存在。]<

关于json - Go Lang 帮助 - 访问数组/接口(interface) slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780558/

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