JSON 内の型が混在する配列のデコード
異なる型の値を含む JSON 配列を扱う場合、アンマーシャリング方法を考慮することが重要です。それらを Go プログラムに効果的に組み込みます。 Go 配列には明示的に定義された型が必要であり、さまざまな値の型を処理するときに問題が生じます。
解決策: インターフェースの利用{}
解決策はインターフェースを使用することです。{} 、任意の型の値を保持できる Go の特別な型。 Interface{} 配列を使用することで、同じ配列内にさまざまな型の値を柔軟に保存できるようになります。
実装例
次の JSON 例を考えてみましょう。
{"key": ["NewYork", 123]}
インターフェース{}を使用してこの JSON をアンマーシャリングするには、カスタム データを定義できます構造:
type UntypedJson map[string][]interface{}
この型は、文字列からインターフェースの配列へのマップを表し、あらゆる型の値を格納できるようにします。
JSON のアンマーシャリング
JSON をアンマーシャルするには、json.Unmarshal を使用できます。 function:
var ut UntypedJson json.Unmarshal([]byte(jsonString), &ut)
ut 変数には、アンマーシャリングされていないデータが UntypedJson 型として含まれるようになります。マップ キーは JSON オブジェクト キーに対応し、配列値はさまざまな型の値を保持します。
プレイグラウンドの例
Go プレイグラウンドが埋め込まれた完全な例は、ここで見つかります:
const j = `{"NYC": ["NewYork",123]}` type UntypedJson map[string][]interface{} func main() { ut := UntypedJson{} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v", ut) }
以上がGo でデータ型が混在する JSON 配列をデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。