私の質問はgolangでJSONファイルを解析することです。googleでJSONを解析する
具体的には、「docker network inspect bridge」というコマンドの出力をJSON形式で解析しようとしています。コマンドについては、ここで説明します。私の目標は、リストされたコンテナの "IPv4Address"のリストを取得することです。
私はこれを実行しようとしましたが、マップ[文字列]インタフェース{}を[文字列]文字列にマップすることに失敗しました。私のコードはここにある: - https://play.golang.org/p/eO_j996gGb
$ sudo docker network inspect bridge
[
{
"Name": "bridge",
"Id": "b2b1a2cba717161d984383fd68218cf70bbbd17d328496885f7c921333228b0f",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "172.17.42.1/16",
"Gateway": "172.17.42.1"
}
]
},
"Internal": false,
"Containers": {
"bda12f8922785d1f160be70736f26c1e331ab8aaf8ed8d56728508f2e2fd4727": {
"Name": "container2",
"EndpointID": "0aebb8fcd2b282abe1365979536f21ee4ceaf3ed56177c628eae9f706e00e019",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
},
"f2870c98fd504370fb86e59f32cd0753b1ac9b69b7d80566ffc7192a82b3ed27": {
"Name": "container1",
"EndpointID": "a00676d9c91a96bbe5bcfb34f705387a33d7cc365bac1a29e4e9728df92d10ad",
"MacAddress": "02:42:ac:11:00:01",
"IPv4Address": "172.17.0.1/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
}
}
]
golangに、このようなJSONファイルを解析するための正しい方法は何ですか。私はタイプ変換を使ってみましたが、助けにはなりません。私は多くのことを試しましたが、最終的にはスニペットに示されているコードまでしか到達できませんでした。 "cont"オブジェクトからIPv4Addressフィールドを抽出するにはどうすればよいですか?
私が持っている遊び場スニペットへのリンクはhttps://play.golang.org/p/eO_j996gGbです。どんな助けも大いに評価されます(物事を試して喜んで、コードだけでなくアイディアが必要です:)ありがとう。
More FYI:ほとんどのドッカーコマンドは、 'text/template'パッケージのGolangテンプレートである必要がある' --format'オプションを受け入れます。 – TheHippo