ホームページ >バックエンド開発 >Golang >マーシャリングおよびアンマーシャリング時に JSON キーを動的に変更する

マーシャリングおよびアンマーシャリング時に JSON キーを動的に変更する

WBOY
WBOY転載
2024-02-11 09:30:091231ブラウズ

marshal 和 unmarshal 时动态更改 json key

php エディタ Xiaoxin では、マーシャルおよびアンマーシャルのプロセス中に JSON キーの値を動的に変更する方法を紹介します。 JSON データを処理するとき、キーの値を変更または置換する必要がある場合があります。この記事では、開発者が PHP でこの目標を達成するのに役立つ、シンプルかつ効果的なテクニックを紹介します。いくつかの特定の関数とテクノロジーを使用することで、JSON データを簡単に操作し、キー値を動的に変更するニーズを実現できます。次は編集者をフォローして実践テクニックを学んでください!

質問内容

同じオブジェクト (VAT 番号) に対して 2 つの異なるキーまたは識別子を持つ API を使用する必要があります。呼び出しが GET か POST/PATCH かによって異なります

GET では、次の構造を使用して JSON をアンマーシャル/デコードする必要があります:

リーリー

POST と PATCH では、この構造を使用してデータを json にマーシャリングできます。 リーリー

明白な解決策は、内容は同じだがわずかに異なる JSON キーを持つ 2 つの「異なる」構造と 2 つの変換関数を用意することです。または、構造体に 2 つの異なるフィールド (Vat と VatIndentifier) を含めます。

問題は、すでに複雑なコードがさらに複雑になることです。

だから知りたいのですが:

構造内のVatフィールドのJSONキーを状況に応じて変更する(リフレクションと同様の)方法はありますか?

回避策

構造体タグを含む型定義を実行時に変更することはできません。

フィールドのタイプと順序 (つまり、メモリ レイアウト) が同じである限り、変換関数はまったく必要なく、直接変換できます:

https://go.dev/play/ p/IhkVM-BMLiY リーリー

これは、このタイプのシナリオの一般的な解決策です。

以上がマーシャリングおよびアンマーシャリング時に JSON キーを動的に変更するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。