我想看到类似的东西
class User {
@JsonMask({"name", "address"})
private Company company;
private String name;
//...
}
class Company {
private String name;
private String address;
private Set<User> employers;
//...
}
当用户序列化时,输出应为
{"name": "Mike", "company": {"name": "Enterprise Co.Ltd", "address": "....." }}
并且可以安全地忽略昂贵的部分Set<User>
和其他子属性。
我对杰克逊还不是很熟悉,只发现了@JsonIgnore,但是我会永远失去所有这些@JsonIgnored属性。有没有一种优雅的方法来解决这个问题?
注意:我正在使用Hibernate JPA,所以在我的Model类中有很多关系,有很深的关系链甚至是循环引用,所以完整的JSON序列化总会导致地狱......我用Google搜索了@JsonManagedRef和朋友,但这只能解决循环问题,并导致很多配置,并且不太可读。
答案 0 :(得分:0)
只找到@JsonIgnore救援,但后来我将永远失去所有@JsonIgnored属性
据我所知,您希望仅在序列化Company
时忽略不需要的User
属性,而不是在序列化Company
时应该发生的情况。直接
如果可以使用不同的序列化程序实例,即两个不同的ObjectMapper
个实例,那么在序列化User
时,解决此问题的一种方法是使用mix-in来应用@JsonIgnore
视情况而定。然后在序列化Company
时不要使用相同的序列化程序和混合。
如果只需要一个序列化程序,则需要自定义序列化。