我需要将复杂的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"
}
}
Run Code Online (Sandbox Code Playgroud)
我需要将它映射到像这样的对象:
NetworkSettings struct {
IpAddress string
SandboxID string
Gateway string
Ports map[string][]Binding
Networks map[string]map[string]string
}
Run Code Online (Sandbox Code Playgroud)
但是因为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
Run Code Online (Sandbox Code Playgroud)
但这就是我需要一张复杂的地图结构图.
知道怎么做吗?
发生该错误是因为JSON中的某些值不是字符串,而是整数(IPPrefixLen例如),因此无法分配给字符串变量.
有两种方法可以解决这个问题.您可以使用该interface{}类型,因此您的类型定义将变为:
NetworkSettings struct {
IpAddress string
SandboxID string
Gateway string
Ports map[string][]Binding
Networks map[string]map[string]interface{}
}
Run Code Online (Sandbox Code Playgroud)
更好的解决方案可能是为网络块定义类型:
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |