ホームページ >バックエンド開発 >Golang >Goで未知の構造を持つJSONをデコードするにはどうすればよいですか?

Goで未知の構造を持つJSONをデコードするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-28 10:23:11355ブラウズ

How to Decode JSON with an Unknown Structure in Go?

構造が不明な JSON のデコード

プログラミングの分野では、JSON (JavaScript Object Notation) は、内部のデータを表現する手段として機能することがよくあります。ソフトウェアアプリケーション。ただし、馴染みのない構造の JSON に遭遇した場合、特定の情報を抽出することが困難になる可能性があります。次のシナリオを考えてみましょう:

次のように JSON 文字列を処理する必要があります:

{ 
  "votes": { 
    "option_A": "3" 
  } 
}

目標は、「count」キーを含めてこの JSON を拡張することです。その結果、次の出力が得られます。 :

{ 
  "votes": { 
    "option_A": "3" 
  }, 
  "count": "1" 
}

この課題は、初期 JSON の未知の構造から生じます。特定の型付き構造体で json.Unmarshal 関数を使用するなどの従来の方法は適用できなくなります。

解決策: マップにアンマーシャルする

この障害を克服するには、次のようにします。 Go のマップの柔軟性を活用できます。次のコード スニペットは、JSON をマップ[文字列]インターフェイス{}にアンマーシャリングする方法を示しています。

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    in := []byte(`{ 
      "votes": { 
        "option_A": "3" 
      } 
    }`)
    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }
    
    // Modify the map by adding the "count" key
    raw["count"] = 1
    
    // Marshal the modified map back to JSON
    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }
    
    fmt.Println(string(out))
}

JSON をマップにアンマーシャリングすることで、あらゆる入力に対応できる型に依存しないデータ構造を効果的に作成します。 。これにより、事前定義された型に依存せずに、JSON コンテンツに動的にアクセスして変更することができます。

上記のコードの最終出力は次のとおりです。

{ 
  "votes": { 
    "option_A": "3" 
  }, 
  "count": "1" 
}

このアプローチは、便利で柔軟な機能を提供します。未知の構造を持つ JSON をデコードするためのソリューションで、開発者がデータを効率的に抽出して操作できるようにします。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。