Spring MVC + Hibernate を使用してこの webapp を開発しました。
Service 内のすべてのオブジェクトを取得し、それらをコントローラーに直接返します。通常、これらのオブジェクトは遅延初期化されるため、コレクションは空になります。
したがって、オブジェクト User の場合:
User
{
int idUser;
City city;
String name;
List<User> friends;
}
idUser と名前だけのオブジェクトを返します。City と Friends は初期化されていません。
REST API を提供するためにすべてのサービス メソッドを (変更せずに) 利用したいので、ApiController から ID 1 のユーザーを取得するように要求すると、このユーザーに関するすべての有用な情報を JSON で取得します。
GSON を使用してみましたが、都市オブジェクトを jsonize しようとするとすぐに、遅延初期化されているためクラッシュします。友達コレクションも同様です。
私のAPIでは、ユーザーIDを指定してすべての友達を取得できる別のリクエストURLがあるため、コレクションの場合は大したことではありませんが、単一のオブジェクト(この例の都市など)との関係の場合、私は遅延読み込みの定義により実際に設定されている City の ID を返したいとします。
オブジェクト全体ではなく City の cityId 属性だけを jsonize するように GSON に指示するにはどうすればよいですか?
残りのコレクションを null にすることは良い解決策なので、JSON に変換されませんか? これらの属性を無視するように GSON に明示的に指示する他の方法はありますか?