ホームページ >バックエンド開発 >Golang >Go の「json.Unmarshal」を使用して複雑な JSON 構造を効果的に解析するにはどうすればよいですか?

Go の「json.Unmarshal」を使用して複雑な JSON 構造を効果的に解析するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-18 07:11:11153ブラウズ

How Can I Effectively Parse Complex JSON Structures Using Go's `json.Unmarshal`?

Go Unmarshal を使用した複雑な JSON の解析

Go では、encoding/json パッケージは、JSON データを解析するための json.Unmarshal 関数を提供します。このデータは、予期しないデータ構造を反復するために、事前定義された構造体またはインターフェイス タイプにアンマーシャリングできます。{}ただし、複雑な JSON の解析は難しい場合があります。

たとえば、次の JSON を考えてみましょう。

{
  "k1": "v1",
  "k2": "v2",
  "k3": 10,
  "result": [
    [
      ["v4", "v5", {"k11": "v11", "k22": "v22"}],
      ...
      ["v4", "v5", {"k33": "v33", "k44": "v44"}]
    ],
    "v3"
  ]
}

json.Unmarshal を使用してこの JSON を解析するには、interface{} 変数を作成し、解析した結果をそこに保存します:

type MyData struct {
  v1 string
  v2 string
  v3 int
  result [][]MySubData
  result2 string
}

type MySubData struct {
  v1 string
  v2 string
  result map[string]string
}

var f interface{}
err := json.Unmarshal(b, &f)

アンマーシャリング後、f 変数は文字列を含むマップになります。キーと空のインターフェイス値。このデータにアクセスするには、型アサーションを使用して f を map[string]interface{} に変換し、それを反復処理します。

m := f.(map[string]interface{})
for k, v := range m {
  switch vv := v.(type) {
    case string:
      // Handle string values
    case int:
      // Handle integer values
    case []interface{}:
      // Handle array values
    default:
      // Handle unknown types
  }
}

このアプローチにより、型を維持しながら予期しない JSON データ構造を操作できるようになります。安全性。詳細については、JSON と Go に関する元の記事を参照してください。

以上がGo の「json.Unmarshal」を使用して複雑な JSON 構造を効果的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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