多様な値型を持つ JSON 配列を解明する
データのシリアル化と逆シリアル化の領域では、さまざまな値の型を含む JSON 配列を処理する必要があります。値の型はよく見られます。 ["NewYork", 123] のような配列があるシナリオを考えてみましょう。 Go 配列には明示的な型定義が必要なため、これは苦境をもたらし、この不一致をどのように調整するかが不明のままです。
難問に取り組む
このジレンマを回避するには、最初のステップが必要です。 JSON 配列の有効性を確認するためです。 JSON オブジェクトは各値のキーを必要とするため、より適切な表現は {"key":["NewYork",123]} または単に ["NewYork",123] になります。
配列の場合、解決策は 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) }
この例では、カスタム タイプ UntypedJson を定義します。これは文字列からインターフェースの配列へのマップです。{}これにより、JSON 配列内のさまざまな型を保持しながら、JSON 配列をアンマーシャリングすることができます。
次に、json.Unmarshal 関数を使用して UntypedJson 構造体にデータを設定し、出力はわかりやすくするために出力および書式設定されます。
このアプローチにより、さまざまな値タイプを持つ JSON 配列を簡単かつ柔軟に処理できるようになります。 Interface{} の機能を活用することで、明示的な型定義の落とし穴を回避し、Go アプリケーションでできることの範囲を拡大できます。
以上がGo でデータ型が混在する JSON 配列を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。