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

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

Linda Hamilton
リリース: 2024-11-23 04:33:16
オリジナル
923 人が閲覧しました

How to Decode JSON Arrays with Mixed Data Types in Go?

値型が混在した JSON 配列のデコード

場合によっては、異なる型の要素を含む JSON 配列が発生することがあります。例:

{["NewYork",123]}
ログイン後にコピー

Go 配列では型を明示的に指定する必要がありますが、混合型の配列を扱う場合は困難になる可能性があります。

インターフェイスを使用した解決策{}

混合型の配列を処理するには、任意の型の値を許可するインターフェース型を利用できます。{} Go でこれを実現する方法は次のとおりです。

package main

import (
    "encoding/json"
    "fmt"
)

type UntypedJson map[string][]interface{}

func main() {
    j := `{"NYC": ["NewYork",123]}`
    ut := UntypedJson{}
    err := json.Unmarshal([]byte(j), &ut)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%#v", ut)
}
ログイン後にコピー
  • まず、文字列をインターフェイスの配列にマッピングするカスタム タイプ UntypedJson を定義します。{}これにより、任意の型の値を配列に格納できるようになります。
  • json.Unmarshal を使用して、JSON 文字列を UtnyptedJson 型にデコードします。 Interface{} は任意の型を保持できるため、配列内の文字列要素と整数要素の両方を処理できます。
  • 最後に、fmt.Printf を使用して、アンマーシャリングされたデータを表示します。

注: JSON オブジェクトにはキーが必要であるため、提供された JSON の例は技術的に無効であることに注意してください。修正された例は次のようになります:

{"NYC": ["NewYork",123]}
ログイン後にコピー

以上がGo でデータ型が混在した JSON 配列をデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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