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

Barbara Streisand
リリース: 2024-11-25 10:59:14
オリジナル
341 人が閲覧しました

How to Unmarshal Nested JSON into an Array of Objects in Go?

Go でネストされた JSON をオブジェクトの配列にアンマーシャリングする

問題

次の 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 を Monster の配列にアンマーシャリングすることです。

type Monster struct {
    MonsterId  int32
    Level      int32
    SkillLevel int32
    AimerId    int32
}
ログイン後にコピー

解決策

これを実現するには、次の手順に従います:

  1. MonsterCollection を定義します: 保持する MonsterCollection タイプを作成します。文字列を含むMonsterオブジェクトのマップkey.
type MonsterCollection struct {
    Pool map[string]Monster
}
ログイン後にコピー
  1. FromJson メソッドの実装: アンマーシャリングを処理するために、MonsterCollection 型で FromJson メソッドを定義します。
func (mc *MonsterCollection) FromJson(jsonStr string) error {
    var data *map[string]Monster
    b := []byte(jsonStr)
    return json.Unmarshal(b, &data)
}
ログイン後にコピー
  • var データの使用 *map[string]Monsterインターフェイス{}の使用を回避し、結果のマップが目的のタイプになるようにします。
  • データをポインタとして渡すことで、アンマーシャリング中に行われた変更が MonsterCollection の Pool フィールドに確実に反映されます。
  1. プールのキー タイプを修正します: プール マップのキー タイプを文字列に変更します。
  2. Use Struct Tags: JSON 構造体タグを Monster 構造体に追加して、JSON データ内のフィールド名を指定します。
type Monster struct {
    MonsterId  int32 `json:"monster-id"`
    Level      int32 `json:"level"`
    SkillLevel int32 `json:"skill-level"`
    AimerId    int32 `json:"aimer-id"`
}
ログイン後にコピー
  1. Call FromJson: を使用して FromJson メソッドを呼び出します。データを MonsterCollection にアンマーシャルするための JSON 文字列。
mc := new(MonsterCollection)
err := mc.FromJson(jsonStr)
ログイン後にコピー
  1. エラーの確認: デバッグ目的で FromJson によって返されたエラーを処理します。
  2. オブジェクトにアクセスします: のプールフィールドを使用します。 MonsterCollection を使用して、個々の Monster オブジェクトにアクセスします。
for id, monster := range mc.Pool {
    fmt.Println(id, monster)
}
ログイン後にコピー

これらの手順に従うことで、Go でネストされた JSON データを Monster オブジェクトの配列にアンマーシャリングできます。

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

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