たとえば、Java Play アプリケーションのモデルから、JSON データを返す REST のようなエンドポイントがあるとします。JSON 出力を作成する方法は 2 つあります。
HTML テンプレートと同様の JSON テンプレートを使用します。次のようになります。
{ "name": "${user.name}", "id": "${user.id}", . . . }
私が気に入っているのは柔軟性です。データ (メタデータ、ステータス メッセージなど) のラッパーを簡単に作成できます。また、配信されるものに簡単に影響を与えることができます (パスワード フィールド、最終ログインのタイムスタンプなどは、もちろん、クライアントに表示したくないものではありません)。もちろん、有効な JSON を取得するには、テンプレート変数の内容を正しくエスケープする必要があります。これを行う最善の方法は何ですか?
2 つ目の方法は、モデルの POJO を直接 JSON にシリアル化することです。もちろん、これはより高速であり、より少ない労力で実行できます。テンプレート アプローチとは対照的に、自動プロセスであるため、おそらくより信頼性が高くなります。しかし: パスワードやメタデータ フィールドなどのデータを除外するにはどうすればよいですか? 関連データのみを含む jackson 実装で新しい JSON オブジェクトを作成する必要がありますか? または、モデル クラスごとに "json-model" を作成し、シリアル化する前に、リクエストごとに実際のモデルを json-model に変換する必要がありますか?
個人的には、その柔軟性からテンプレート アプローチが気に入っています。しかし、JSON や XML などを手動で作成してはいけないと言う人もいるでしょう。しかし、これは本当にこの場合の問題ですか、何をお勧めしますか?