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

Mat*_*ann 5 spring json spring-mvc jackson

我使用Spring并创建一个REST服务.

这是我的控制器的一部分:

@RequestMapping("/get")
public @ResponseBody Person getPerson() {
    Person person = personRepository.findOne(1L);
    //(1) person.setRoles(null);
    return person;
}
Run Code Online (Sandbox Code Playgroud)

该人的角色是懒惰的初始化,当时不需要.当(1)被注释掉时,一切都会失败

org.springframework.http.converter.HttpMessageNotWritableException:无法编写JSON:懒得初始化角色集合:no.something.project.Person.roles,无法初始化代理 - 没有会话等

我可以通过执行(1),手动将其设置为null(或其他一些值)来解决这个问题,因此当Jackson尝试序列化我的对象时它不会失败.

然而,这很烦人,必须在不同的地方做很多次.我想要一些简单的解决方案,在未初始化时忽略那些延迟的初始化字段,或者只是将它们设置为null.

注意:@JsonIgnore对象的值不是解决方案,因为在其他情况下我希望包含这些值.

Mic*_*aev 5

检查杰克逊意见杰克逊的过滤器(两者都是由Spring我记得支持).

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