ホームページ > バックエンド開発 > Golang > Go で JSON オブジェクトを構造体の配列にアンマーシャリングする方法

Go で JSON オブジェクトを構造体の配列にアンマーシャリングする方法

Barbara Streisand
リリース: 2024-11-29 13:26:19
オリジナル
318 人が閲覧しました

How to Unmarshal a JSON Object into an Array of Structs in Go?

Go で JSON をオブジェクトの配列にアンマーシャリングする方法

質問

次の JSON を Go のオブジェクトの配列にアンマーシャリングするにはどうすればよいですかlanguage?

{
    "1001": {"level":10, "monster-id": 1001, "skill-level": 1, "aimer-id": 301},
    "1002": {"level":12, "monster-id": 1002, "skill-level": 1, "aimer-id": 302},
    "1003": {"level":16, "monster-id": 1003, "skill-level": 2, "aimer-id": 303}
}
ログイン後にコピー

解決策

提供された JSON を有効にするには、最上位オブジェクトのキーと値のペアの間にカンマを追加するなど、いくつかの変更が必要です:

{
   "1001":{
      "level":10,
      "monster-id":1001,
      "skill-level":1,
      "aimer-id":301
   },
   "1002":{
      "level":12,
      "monster-id":1002,
      "skill-level":1,
      "aimer-id":302
   },
   "1003":{
      "level":16,
      "monster-id":1003,
      "skill-level":2,
      "aimer-id":303
   }
}
ログイン後にコピー

この JSON をオブジェクトの配列にアンマーシャリングするには、次のコマンドを使用できます。コード:

type Monster struct {
    MonsterId  int32 `json:"monster-id"`
    Level      int32 `json:"level"`
    SkillLevel int32 `json:"skill-level"`
    AimerId    int32 `json:"aimer-id"`
}

type MonsterCollection struct {
    Pool map[string]Monster
}

func (mc *MonsterCollection) FromJson(jsonStr string) error {
    var data =&mc.Pool
    b := []byte(jsonStr)
    return json.Unmarshal(b, data)
}
ログイン後にコピー

このコード内:

  • Monster 構造体はオブジェクトの構造を表します。
  • MonsterCollection 構造体には、それぞれのモンスターのプールが含まれています。
  • FromJson メソッドは、JSON 文字列をプールにアンマーシャリングします。 map.

エラー戻り値はデバッグ目的に役立ち、無効な JSON 構文などのエラーを検出できます。

実際の例は Golang Playground で見つけることができます: http: //play.golang.org/p/4EaasS2VLL.

以上がGo で JSON オブジェクトを構造体の配列にアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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