不明な形式の JSON データのアンマーシャリング
予測できない構造と可変キーを持つ JSON データに直面すると、アンマーシャリングの課題が生じます。それを Go 構造に組み込みます。この記事では、このようなシナリオを効率的に処理する方法について説明します。
解決策
この問題に取り組むには、次の 2 つの推奨アプローチがあります。
アプローチ1: マップを使用する
キーが不明な場合、 map[string]interface{} 変数は、JSON ペイロードをアンマーシャリングするための適切なオプションです。
var grades map[string]interface{} err := json.Unmarshal([]byte(jsonString), &grades)
ここで、マップ変数「grades」にはアンマーシャリングされたデータが含まれます。ここで、キーは不明なサブジェクト名を表し、値は、生徒の名前と成績で構成されるマップです。
アプローチ 2: JSON を使用して不明なキーを無視するタグ
構造体が優先される場合は、json:"-" タグで注釈を付けて、JSON マーシャリングおよびアンマーシャリング中に特定のフィールドを無視できます。これにより、構造体は不明なキーを除外しながら、非マーシャリング データを保持できるようになります。
type GradeData struct { Grades map[string]interface{} `json:"-"` } var gradesData GradeData err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)
この場合、構造体 "GradeData" には、科目名と生徒のマップである "Grades" フィールドのみが含まれます。グレードはありますが、JSON からの元のキー名は存在しません。 JSON タグにより、構造体のフィールドが目的の出力形式と一致することが保証されます。
以上がGo で予期しない JSON 構造をアンマーシャリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。