ホームページ >バックエンド開発 >Golang >Go で予期しない JSON 構造をアンマーシャリングするにはどうすればよいですか?

Go で予期しない JSON 構造をアンマーシャリングするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-25 12:11:15940ブラウズ

How to Unmarshal Unexpected JSON Structures in Go?

不明な形式の 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 サイトの他の関連記事を参照してください。

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