【发布时间】:2014-06-13 19:01:52
【问题描述】:
我想在反序列化阶段选择性地忽略 JSON 属性。我目前正在处理一个巨大的 JSON 文件,该文件需要很长时间才能在慢速 Android 设备上反序列化,我想指定一些在应用程序生命周期的不同阶段不反序列化的属性。问题是,有时我需要数据,并且需要能够在我真正需要的时候反序列化被忽略的数据。
我正在使用 Jackson 和 ObjectMapper。
示例 POJO:
public class Pojo {
private String name;
private Map<String, String> data;
...
}
示例 JSON:
{
"pojos" : [ {
name : "Name",
data : {
"somedata1" : "somevalue1",
"somedata2" : "somevalue2",
"somedata3" : "somevalue3"
...
}
} ]
}
会有大量的“pojo”,每个“数据”属性都会变得巨大。所以我有时想通过忽略“数据”属性来反序列化。有时我希望“数据”能够正常反序列化。
【问题讨论】:
-
我们需要做的远不止这些。代码在哪里?你在使用 ObjectMapper 吗?你有一节课吗?几门课?你是手动反序列化的吗?规则是什么?数据结构是什么?一种方法是让不同的类具有不同的 JsonIgnoreProperties 注释,但没有任何信息不能说。
-
我也在考虑不同的类方法,但这意味着我需要更改我的服务接口,因为它依赖于序列化类类型。我用示例代码和 JSON 编辑了问题。
-
所以你所有的数据总是一个字符串映射?在这种情况下,您无能为力。
-
@Antionio 通过使用不同的类,您可以创建一个与服务接口中的类相匹配的超类,然后创建 2 个或更多子类......所以希望服务中不应更改任何内容
-
@AngeloImmedia 你的方法似乎是有效的,所以如果你要创建一个官方答案,我会接受它。
标签: java json performance jackson