JSON 応答での動的フィールド選択
Go では、開発者は構造体を JSON 応答としてエンコードすることがよくあります。クライアントが応答をカスタマイズできるようにするには、要求に基づいてフィールドを選択的に除外または含めることをお勧めします。
動的フィールドの削除または非表示
残念ながら、Go は静的に-定義された JSON 構造体タグ (json:"date" など) では、動的なフィールドの削除や非表示は許可されません。 json:"-" タグはフィールドを完全に無視するため、フィールドを選択的に非表示にするのには適していません。
マップを使用した解決策
考えられる解決策は、マップを使用することです。構造体の代わりに [string]interface{} を使用します。これにより、削除関数を呼び出してフィールドを動的に削除できます:
type SearchResponse map[string]interface{} func (r SearchResponse) RemoveField(field string) { delete(r, field) }
レスポンスを生成するには、マップを作成し、それにデータを入力し、不要なフィールドを削除できます:
m := SearchResponse{ "date": "2023-03-01", "company": "Acme Corp", "industry": "Software", "continent": "North America", } m.RemoveField("industry")
結果のマップには、応答に必要なフィールドのみが含まれます:
{ "date": "2023-03-01", "company": "Acme Corp", "continent": "North America" }
このアプローチは動的フィールド選択を提供し、適切な代替手段です。
追加の考慮事項
フィールドを選択的に除外する代わりに、要求されたフィールドのみをデータベースから取得することもできます。これはより効率的である可能性がありますが、すべての場合に可能であるとは限りません。
以上がGo の JSON 応答で動的フィールド選択を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。