7

假设我有一个对象,例如具有地址对象列表的业务,以及具有业务的订单。

是否可以进行配置,以便在序列化订单时从业务对象中排除地址列表,而在序列化业务时包含列表?

我正在使用 ajax 为 RIA 提取数据,并且在使用 Order 时我并不真正关心地址数据,但在处理 Business 时我确实想要列表。

我还在使用 Hibernate 进行持久性,所以这确实是一种效率和性能优化。

4

4 回答 4

8

如果我正确理解问题,是的,我认为杰克逊的JSON 视图会允许这样做。您基本上会为同一类型创建两个不同的视图(配置文件),然后选择哪一个用于序列化。

于 2010-03-25T21:12:48.577 回答
5

您可以使用JsonIgnore Annotation忽略序列化中的地址列表,并在序列化Business时关闭ObjectMapperSerializationConfig中注释的使用。当然,这意味着您可能使用的其他注释也会被忽略。不完美,但您可能会找到一个更好的解决方案,希望它有所帮助(显然)。

ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);
于 2010-03-24T14:57:06.840 回答
0

是的,你可以做到。您只需要在业务对象中将地址列表声明为临时属性。

然后将以下代码添加到您的 jsonConfig:

jsonConfig.setIgnoreTransientFields(true);
于 2013-04-18T09:41:53.733 回答
-1
@JsonIgnore 

用于忽略您不想转换为 json 的属性。

public class UserDocument {

    private long id;

    private String documentUrl;

    @JsonIgnore
    private byte documentType;

    //traditional getters and setters
}

输出:这将转换属性iddocumentUrl但不会转换属性documentType

{
  "id": 5,
  "document_url": "/0/301115124948.jpg"
}
于 2015-12-03T10:15:21.223 回答