ホームページ  >  記事  >  バックエンド開発  >  Go でデータ型が混在する JSON 配列をデコードするにはどうすればよいですか?

Go でデータ型が混在する JSON 配列をデコードするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-26 10:06:10760ブラウズ

How Can I Decode JSON Arrays with Mixed Data Types in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。