ホームページ  >  記事  >  バックエンド開発  >  Go で大文字と小文字を区別する JSON アンマーシャリングを実現するにはどうすればよいですか?

Go で大文字と小文字を区別する JSON アンマーシャリングを実現するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-10 01:27:02342ブラウズ

How to Achieve Case-Sensitive JSON Unmarshaling in Go?

大文字と小文字を区別する JSON アンマーシャリングの処理

JSON を利用する場合、アンマーシャリング プロセス中に大文字と小文字を区別する処理が必要になる場合があります。ただし、Go の標準 JSON ライブラリでは大文字と小文字を区別しない一致が優先されるため、予期しない動作が発生する可能性があります。

大文字と小文字を区別しない一致動作

公式ドキュメントによると、アンマーシャリング中に受信される JSON キーは構造体のフィールド名またはタグと比較します。ライブラリは完全一致を優先しますが、大文字と小文字を区別しない一致も許容します。たとえば、「e」や「E」などのキーを含む JSON を受信し、「e」バリアントのみをアンマーシャリングしたい場合、競合が発生する可能性があります。

大文字と小文字を区別するアンマーシャリングの欠如

残念ながら、標準の JSON ライブラリは現在、大文字と小文字を区別しないアンマーシャリングを無効にする簡単なメカニズムを提供していません。 https://golang.org/pkg/encoding/json/#Unmarshal のドキュメントには次のように明示的に記載されています:

「Unmarshal は、受信したオブジェクトのキーを Marshal によって使用されるキー (構造体フィールド名またはそのタグ) と照合します。」 、完全一致を優先しますが、大文字と小文字を区別しない一致も受け入れます。"

代替解決策

標準ライブラリにはすぐに使えるソリューションが提供されていないため、考えられる回避策の 1 つは、encoding/json パッケージを拡張してカスタム JSON デコーダを作成することです。このデコーダは、大文字と小文字が異なるタグを無視するフィールド レベルの大文字と小文字を区別するアンマーシャリング メカニズムを実装できます。

以上がGo で大文字と小文字を区別する JSON アンマーシャリングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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