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

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

Linda Hamilton
リリース: 2024-11-29 11:11:10
オリジナル
908 人が閲覧しました

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

多様な値型を持つ 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート