我使用Spring并创建了一个REST服务。
这是我的控制器的一部分:
@RequestMapping("/get")
public @ResponseBody Person getPerson() {
Person person = personRepository.findOne(1L);
//(1) person.setRoles(null);
return person;
}
该人的角色是懒惰的初始化,当时不需要。当注释掉(1)时,一切都会以
失败org.springframework.http.converter.HttpMessageNotWritableException: 无法写JSON:懒得初始化一个集合 角色:no.something.project.Person.roles,无法初始化代理 - 没有会话等。
我可以通过执行(1),手动将其设置为null(或其他一些值)来解决这个问题,因此当Jackson尝试序列化我的对象时它不会失败。
然而,这很烦人,必须多次在不同的地方进行。我想要一些简单的解决方案,在未初始化时忽略那些延迟的初始化字段,或者只是将它们设置为null。
注意:@JsonIgnore对象的值不是解决方案,因为在其他情况下我希望包含这些值。
答案 0 :(得分:5)
检查Jackson Views Jackson Filters(我记得两者都得到了Spring的支持)。
此外,要使用惰性字段(如果不排除它们),您需要 - jackson-module-hibernate