可変キーを持つ不明な形式の JSON データをアンマーシャルする
不明なキーまたは可変キーを持つ JSON データを扱う場合、次のことが困難になる場合があります。アンマーシャリングの目的で特定の GoLang 構造体を定義します。この記事では、2 つの実行可能な解決策を提供することで、この問題に対処します。
解決策 1: map[string]interface を使用する{}
キーに関する知識がない場合JSON ペイロード内に存在する場合、文字列キーとインターフェース値を持つマップ(つまり、map[string]interface{})を利用できます。{}このアプローチにより、事前定義された構造体を必要とせずに、データの動的なアンマーシャリングが可能になります。例:
var grades map[string]interface{} err := json.Unmarshal([]byte(jsonString), &grades) fmt.Println(err) fmt.Printf("%#v\n", grades)
解決策 2: 無視されたフィールドを持つ構造体を使用する
構造体を使用したいが、アンマーシャリング中に不明なフィールドを無視したい場合は、次のようにします。これらのフィールドには json:"-" タグを使用できます。このタグは、プロセス中にこれらのフィールドを考慮しないように JSON デコーダーに指示します。例:
type GradeData struct { Grades map[string]interface{} `json:"-"` } err := json.Unmarshal([]byte(jsonString), &gradesData.Grades) fmt.Println(err) fmt.Printf("%#v\n", gradesData)
どちらのソリューションも、未知のキーまたは可変キーを持つ JSON データを柔軟に処理できます。ただし、さらに処理やデータ操作を行う場合は、要件に応じてデータを特定の型にキャストする必要がある場合があります。
以上がGo で不明なキーまたは変数キーを使用して JSON データをアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。