Go で JSON 配列を解析してデータ構造にする
Go で JSON データを操作する場合、適切なデータ構造を理解することが重要ですさまざまな JSON 形式に対応します。この場合、動的なキーと値のペアの JSON 配列を扱っています。
問題:
の配列を含む JSON ファイルを解析しようとしています。 JSON オブジェクト。ただし、単純な map[string]string を使用してデータを表すとエラーが発生します:
[ {"a" : "1"}, {"b" : "2"}, {"c" : "3"} ]
type data map[string]string c, _ := ioutil.ReadFile("c") dec := json.NewDecoder(bytes.NewReader(c)) var d data dec.Decode(&d) // Error: cannot unmarshal array into Go value of type main.data
解決策:
JSON を正しく解析するには配列の場合は、オブジェクトの配列を表すデータ構造を定義する必要があります。これは、マップのスライスを埋め込むカスタム タイプを使用して実現できます。
type mytype []map[string]string
コード:
package main import ( "encoding/json" "fmt" "io/ioutil" "log" ) type mytype []map[string]string func main() { var data mytype file, err := ioutil.ReadFile("test.json") if err != nil { log.Fatal(err) } err = json.Unmarshal(file, &data) if err != nil { log.Fatal(err) } fmt.Println(data) }
例:
提供された JSON の場合ファイル:
[ {"a" : "1"}, {"b" : "2"}, {"c" : "3"} ]
コードの出力は次のようになります:
[{map[a:1]} {map[b:2]} {map[c:3]}]
以上がGo で動的キーと値のペアの JSON 配列を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。