gpt4 book ai didi

json - 使用未知对象解码 JSON

转载 作者:行者123 更新时间:2023-12-01 20:22:12 26 4
gpt4 key购买 nike

我一直在寻找我的**,但我找不到真正帮助我的解决方案。我在围棋方面有点初学者水平。
我有一个 JSON 结构,其中的某些部分可能会更改(请参阅 *_changeing_name),并且我无权更改 JSON 结构:

{
"instance" : "http://woop.tld/api/v1/health",
"version" : "1.0.0",
"status" : {
"Service1_changing_name" : {
"isAlive" : true,
"level" : 6,
"message" : "Running under normal conditions"
},
"Service2_changing_name" : {
"isAlive" : true,
"level" : 1,
"message" : "Critical condition"
}
},
"errors" : {
"level" : 1,
"messages" : [
"Service2 is in critical condition"
]
},
"performance" : {
"operation" : {
"changing_name1" : 10,
"changing_name2" : 19839,
"changing_name3" : 199,
"changing_name4" : 99
}
}
}
我正在使用这个结构来解码 JSON:
// HealthData object
type HealthData struct {
Instance string `json:"instance"`
Version string `json:"version"`
Status interface {
} `json:"status"`
Errors struct {
Level int `json:"level"`
Messages []string `json:"messages"`
} `json:"errors"`
Performance struct {
Operation map[string]interface {
} `json:"operation"`
} `json:"performance"`
}

我发现的 Stackoverflow 上的大多数解决方案都是针对一些没有嵌套部分的更简单的结构。
我的问题是接口(interface)(状态)和 map [字符串]接口(interface)(操作)。
我缺少什么让 map 中的数据和接口(interface)更方便的数组或 slice ?
很高兴有任何提示指出我正确的方向。
特雷泽

最佳答案

我认为,你应该使用这个结构

type HealthData struct {
Instance string `json:"instance"`
Version string `json:"version"`
Status map[string]struct {
IsAlive bool `json:"isAlive"`
Level int `json:"level"`
Message string `json:"message"`
} `json:"status"`
Errors struct {
Level int `json:"level"`
Messages []string `json:"messages"`
} `json:"errors"`
Performance struct {
Operation map[string]int `json:"operation"`
} `json:"performance"`
}
然后 unmarshal 就像一个魅力一样工作。
healthData:=HealthData{}
if err:=json.Unmarshal(jsonData,&healthData); err!=nil{//error handling}

What am I missing to have the data in map and interface to more convenient arrays or slices?


为此,只需使用 for 循环,就像这样
for key,_:=range healthData.Status{
// you will get healthData.Status[key] as struct
}
for key,_:=range healthData.Performance.Operation{
// you will get healthData.Performance.Operation[key] as int
}

关于json - 使用未知对象解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62692881/

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