java jackson序列化中,是否有一个注释指示要为属性使用哪些子属性?
我想看看这样的东西
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>
和其他子属性被安全地忽略
我对Jackson还不太熟悉,只找到了@JsonIgnore来营救,但那样的话,我将永远失去所有这些@JsonIgnored属性。有没有一个优雅的方法来解决这个问题
注意:我使用的是Hibernate JPA,所以在我的模型类中有很多关系,有很深的关系链,甚至循环引用,所以完整的JSON序列化总是会导致地狱。。。我在谷歌上搜索了@JsonManagedRef和friend,但这只解决了循环问题,导致了大量配置,可读性不强
# 1 楼答案
通过这一点,我理解您希望仅在序列化
User
时忽略不需要的Company
属性,而不是直接序列化Company
时应该发生的情况如果可以使用不同的序列化程序实例,即两个不同的
ObjectMapper
实例,那么在序列化User
时,解决这个问题的一种方法是使用mix-in适当地应用@JsonIgnore
。然后不要使用同一个序列化程序,并在序列化Company
时混合使用如果只需要一个序列化程序,则需要自定义序列化