ホームページ > バックエンド開発 > Golang > Go で JSON を解析するときに二重アンマーシャリングを回避するにはどうすればよいですか?

Go で JSON を解析するときに二重アンマーシャリングを回避するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-30 07:07:09
オリジナル
1022 人が閲覧しました

How to Avoid Double Unmarshaling When Parsing JSON in Go?

二重アンマーシャリングを使用しない Go での JSON のアンマーシャリング

Go では、JSON をさまざまな構造体に解析する必要がある状況に直面する可能性があります。しかし、二重のアンマーシャリングが発生し、冗長性が生じます。この記事では、2 番目のアンマーシャリング ステップを回避するために、データを部分的にアンマーシャリングするソリューションを紹介します。

問題を理解する

JSON を既知の構造体に解析しようとすると、一般的なアプローチは次のとおりです:

  1. JSON を汎用にアンマーシャルするmap[string]interface{}
  2. 期待されるキーを検索します
  3. 値を目的の型にキャストしようとします
  4. キャストが失敗した場合は、値を JSON としてマーシャリングし、アンマーシャリングします目的のタイプ (二重アンマーシャリング)

解決策

値をインターフェースにキャストする代わりに、値を json.RawMessage にアンマーシャリングできます。{}これにより、データが部分的にアンマーシャリングされ、キー値に基づいて特定の構造体へのアンマーシャリングが可能になります。

サンプル コード

この変更されたコードでは、マップを置き換えます。 [string]インターフェイス{}とmap[string]json.RawMessage。 「ack」キーを処理するときは、Ack 構造体に直接アンマーシャリングするため、二重アンマーシャリングの必要がなくなります。

以上がGo で JSON を解析するときに二重アンマーシャリングを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート