Go で JSON 配列を処理する方法
このクエリでは、Go で JSON 配列を解析する際に課題が生じます。 JSON 配列はオブジェクトのコレクションであり、指定された例では、API 呼び出しから返されるデータは複雑なオブジェクトの配列です。
この配列を解析するには、配列内のオブジェクトの構造。まず、PublicKey 構造体を定義します:
type PublicKey struct { name string price string }
次に、PublicKey オブジェクトの配列全体を表す KeysResponse 構造体を定義する必要があります:
type KeysResponse struct { Collection []PublicKey }
次に、JSON をアンマーシャリングします。 KeysResponse 型の変数:
keys := make([]PublicKey, 0) err := json.Unmarshal([]byte(s), &keys) if err == nil { fmt.Printf("%+v\n", keys) } else { fmt.Println(err) fmt.Printf("%+v\n", keys) }
json.Unmarshal 関数JSON から解析されたデータをキー変数に自動的に入力します。ただし、元の質問のコードには見落とされている詳細が含まれていました。PublicKey 構造体のフィールドをエクスポートする必要があります (大文字で始める)。
この変更を加えた後、コードは JSON 配列を正しく解析して出力します。目的の形式での結果:
[{Name:Galaxy Nexus Price:3460.00} {Name:Galaxy Nexus Price:3460.00}]
質問内の JSON テキストには小文字のフィールド名が含まれていますが、json パッケージはそれらに一致するほどインテリジェントであることに注意してください。
より複雑な JSON 構造の場合は、struct タグを使用して JSON フィールド名を struct フィールドに明示的にマップすることをお勧めします。さらに、マップのスライス ([]map[string]interface{}) へのアンマーシャリングは代替アプローチを提供しますが、手動のインデックス作成と型アサーションが必要です。
以上がJSON 配列を Go 構造体に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。