gpt4 book ai didi

json - 复杂的 JSON 编码到 GoLang 对象

转载 作者:IT王子 更新时间:2023-10-29 01:49:15 24 4
gpt4 key购买 nike

我需要将复杂的 JSON 对象编码为 GO 结构。

所以我有来源:

"NetworkSettings": {
"Bridge": "",
"SandboxID": "e9736755bc41db307019fde3be0feed51086e6d3e23b0213c59bb5e43f7af214",
"HairpinMode": false,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "2ee283787f45894c3383229d29ada1ccbb7f34b1c1e143e417e7ba75b7f5ebce",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "1c4788fac19973ddc73975613a2aef5a4cc2be446af458c06fa5fa162e8126ff",
"EndpointID": "2ee283787f45894c3383229d29ada1ccbb7f34b1c1e143e417e7ba75b7f5ebce",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}

我需要将它映射到这样的对象中:

NetworkSettings struct {
IpAddress string
SandboxID string
Gateway string
Ports map[string][]Binding
Networks map[string]map[string]string
}

但是由于 Networks map[string]map[string]string 我收到错误

json: cannot unmarshal object into Go value of type string
error restoring containers: json: cannot unmarshal object into Go value of type string

但是这就是我需要有复杂 map 结构的 map 。

知道怎么做吗?

最佳答案

发生该错误是因为 JSON 中的某些值不是字符串,而是整数(例如 IPPrefixLen),因此无法分配给字符串变量。

有两种方法可以解决这个问题。您可以使用 interface{} 类型,这样您的类型定义将变为:

NetworkSettings struct {
IpAddress string
SandboxID string
Gateway string
Ports map[string][]Binding
Networks map[string]map[string]interface{}
}

更好的解决方案可能是为网络 block 定义一个类型:

type Network struct {
NetworkID string
EndpointID string
Gateway string
IPAddress string
IPPrefixLen int
//etc...
}
type NetworkSettings struct {
IpAddress string
SandboxID string
Gateway string
Ports map[string][]Binding
Networks map[string]Network
}

关于json - 复杂的 JSON 编码到 GoLang 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243731/

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