让jackson忽略在序列化为json时初始化为懒的字段

时间:2013-03-13 19:45:59

标签: json spring spring-mvc jackson

我使用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对象的值不是解决方案,因为在其他情况下我希望包含这些值。

1 个答案:

答案 0 :(得分:5)

检查Jackson Views Jackson Filters(我记得两者都得到了Spring的支持)。

此外,要使用惰性字段(如果不排除它们),您需要 - jackson-module-hibernate