我使用 Spring MVC + Hibernate 开发了这个 webapp。
我在 Service 中检索所有对象,然后将它们直接返回给控制器。这些对象通常是延迟初始化的,因此集合是空的。
所以对于对象用户:
User
{
int idUser;
City city;
String name;
List<User> friends;
}
我返回一个只有 idUser 和 name 的对象,City 和 Friends 没有初始化。
我想利用我所有的服务方法(不修改它们)来提供一个 REST api,所以如果我从我的 ApiController 请求获取 id 为 1 的用户,我会在 JSON 中检索有关该用户的所有有用信息。
我尝试使用 GSON,但是一旦它尝试 jsonize 城市对象,它就会崩溃,因为它已经被延迟初始化。朋友收藏也是如此。
对于集合来说,这没什么大不了的,因为在我的 api 中,我会有另一个请求 url,您可以在其中获取给定用户 ID 的所有朋友,但在与单个对象(如本例中的城市)的关系的情况下,我想返回根据延迟加载的定义确实设置的 City 的 id。
我怎样才能告诉 GSON 只对 City 的 cityId 属性而不是整个对象进行 jsonize?
将其余集合归零是一个很好的解决方案,因此它们不会转换为 JSON 吗?有没有其他方法可以明确告诉 GSON 忽略这些属性?