是否可以配置 Jackson-Json Mapper 以根据正在序列化的对象排除属性?
题
假设我有一些对象,例如带有地址对象列表的企业,以及包含企业的订单。
是否可以进行配置,以便在订单序列化时从业务对象中排除地址列表,而在业务序列化时包含该列表?
我正在使用 ajax 为 RIA 提取数据,在处理订单时我并不真正关心地址数据,但在处理业务时我确实需要列表。
我还使用 Hibernate 来实现持久性,因此这确实是一种效率和性能优化。
解决方案
如果我正确理解问题,是的,我认为 JSON 视图 因为杰克逊会允许这样做。您基本上会为同一类型创建两个不同的视图(配置文件),然后选择使用哪一个进行序列化。
其他提示
是的,你可以做到这一点。所有你需要的是声明瞬态特性地址的列表中,你的业务对象。
然后将以下代码添加到jsonConfig:
jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore
用于忽略的属性,你不想要转换成JSON。
public class UserDocument {
private long id;
private String documentUrl;
@JsonIgnore
private byte documentType;
//traditional getters and setters
}
输出:这将转换的属性的 ID 和<强> documentUrl 强>但不会转换属性的 documentType 即可。
{
"id": 5,
"document_url": "/0/301115124948.jpg"
}
不隶属于 StackOverflow