亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

panic: json: 如何在戈朗中取消馬歇爾嵌套 json 數組

panic: json: 如何在戈朗中取消馬歇爾嵌套 json 數組

Go
繁花不似錦 2022-09-26 20:10:20
我在取消編組嵌套的 json 數組時遇到問題。示例如下:{  "Subnets": [    {      "AvailabilityZone": "xx",      "AvailabilityZoneId": "xx",      "AvailableIpAddressCount": 173,      "CidrBlock": "xx",      "DefaultForAz": "xx",      "MapPublicIpOnLaunch": "xx",      "MapCustomerOwnedIpOnLaunch": "xx",      "State": "xx",      "SubnetId": "xx",      "VpcId": "xx",      "OwnerId": "xx",      "AssignIpv6AddressOnCreation": "xx",      "Ipv6CidrBlockAssociationSet": [],      "Tags": [        {          "Key": "Name",          "Value": "xx"        },        {          "Key": "workload",          "Value": "xx"        },        {          "Key": "xx",          "Value": "xx"        },        {          "Key": "aws:cloudformation:stack-name",          "Value": "xx"        },        {          "Key": "host_support_group",          "Value": "xx"        },        {          "Key": "environment",          "Value": "xx"        },        {          "Key": "client",          "Value": "xx"        },        {          "Key": "aws:cloudformation:stack-id",          "Value": "xx"        },        {          "Key": "application",          "Value": "Subnet"        },        {          "Key": "xx",          "Value": "xx"        },        {          "Key": "xx",          "Value": "xx"        },        {          "Key": "xx",          "Value": "xx"        },        {          "Key": "regions",          "Value": "ca-central-1"        }      ],      "SubnetArn": "xx"    }]  ,  "ResponseMetadata": {    "RequestId": "xx",    "HTTPStatusCode": 200,    "HTTPHeaders": {      "x-amzn-requestid": "xx",      "cache-control": "no-cache, no-store",      "strict-transport-security": "max-age=31536000; includeSubDomains",      "content-type": "text/xml;charset=UTF-8",      "content-length": "3176",      "vary": "accept-encoding",      "date": "xx",      "server": "AmazonEC2"    },    "RetryAttempts": 0  }}
查看完整描述

2 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

您可以使用所需字段創建一個結構,并使用該結構取消封送 JSON 字節,該結構將填充結構中提到的字段。


type Something struct {

    AvailableIpAddressCount int `json:"AvailableIpAddressCount"`

}


var data Something

if err := json.unmarshal(byt, &data); err != nil {

        panic(err)

}


AvailableIpAddressCount = data.AvailableIpAddressCount


查看完整回答
反對 回復 2022-09-26
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

Go 使用靜態結構來解碼 json,因此您可能需要創建一個至少包含您要查找的內容的結構。如果您有您的結構,則可以像這樣訪問可用IP地址計數

tmp.Subnets[0].AvailableIPAddressCount

這是游樂場 https://play.golang.org/p/FsjeOubov1Q。

要從示例 json 創建 json 結構,可以使用此類工具。

如果需要遍歷所有子網:

for _, subnet := range tmp.Subnets {
    fmt.Println(subnet.AvailableIPAddressCount)
}

如果要動態使用 json,也可以使用 https://github.com/spf13/viper。但它可能比靜態解碼慢。


查看完整回答
反對 回復 2022-09-26
  • 2 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號