JSON 解析の領域では、JSON 文字列のトップレベルで動的キーの課題に遭遇することがあります。次の JSON があるとします。
j := `{"bvu62fu6dq": { "name": "john", "age": 23, "xyz": "weu33s" ..... .....} }`
タスクは、この JSON から「name」と「age」の値を抽出することですが、キー「bvu62fu6dq」は動的であり、ケースごとに異なります。
1 つのアプローチは、この動的キーに対応する構造体を定義することです。構造:
type Info struct { UniqueID map[string]string }
ただし、この構造は、「名前」と「年齢」の実際の抽出を処理する際に課題に直面しています。
このような動的な JSON 構造を効果的に解析するには、次の機能を活用できます。 Golang の「encoding/json」パッケージの。解決策は次のとおりです:
type Person struct { Name string `json:"name"` Age int `json:"age"` } type Info map[string]Person
この設定では、動的なトップレベル キー (例: "bvu62fu6dq") をキーとしたマップを使用する、より柔軟なアプローチが採用されています。 「人」構造体は、各動的サブオブジェクト (「名前」や「年齢」など) から抽出しようとするデータをカプセル化します。
この設定により、JSON をデコードして特定の値を抽出することが簡単になります。 :
var info Info err := json.Unmarshal([]byte(j), &info) if err != nil { // Handle error } fmt.Printf("%s: %d\n", info["bvu62fu6dq"].Name, info["bvu62fu6dq"].Age)
この包括的なソリューションは、動的なトップレベルの JSON キーを処理するだけでなく、特定のフィールド (例: 「名前」や「名前」など) の抽出もサポートします。 "age") を各サブオブジェクトから取得します。
以上がGo で動的 JSON キーを解析して特定のフィールドを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。