1

たとえば、Java Play アプリケーションのモデルから、JSON データを返す REST のようなエンドポイントがあるとします。JSON 出力を作成する方法は 2 つあります。

  1. HTML テンプレートと同様の JSON テンプレートを使用します。次のようになります。

    {
      "name": "${user.name}",
      "id": "${user.id}",
      . . . 
    }
    

    私が気に入っているのは柔軟性です。データ (メタデータ、ステータス メッセージなど) のラッパーを簡単に作成できます。また、配信されるものに簡単に影響を与えることができます (パスワード フィールド、最終ログインのタイムスタンプなどは、もちろん、クライアントに表示したくないものではありません)。もちろん、有効な JSON を取得するには、テンプレート変数の内容を正しくエスケープする必要があります。これを行う最善の方法は何ですか?

  2. 2 つ目の方法は、モデルの POJO を直接 JSON にシリアル化することです。もちろん、これはより高速であり、より少ない労力で実行できます。テンプレート アプローチとは対照的に、自動プロセスであるため、おそらくより信頼性が高くなります。しかし: パスワードやメタデータ フィールドなどのデータを除外するにはどうすればよいですか? 関連データのみを含む jackson 実装で新しい JSON オブジェクトを作成する必要がありますか? または、モデル クラスごとに "json-model" を作成し、シリアル化する前に、リクエストごとに実際のモデルを json-model に変換する必要がありますか?

個人的には、その柔軟性からテンプレート アプローチが気に入っています。しかし、JSON や XML などを手動で作成してはいけないと言う人もいるでしょう。しかし、これは本当にこの場合の問題ですか、何をお勧めしますか?

4

1 に答える 1

2

Java を使用していると仮定すると、ジャクソンは注釈を使用してフィールドを除外できます。参照: http://jackson.codehaus.org/1.0.0/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html

于 2013-08-02T09:51:31.713 に答える