Jackson库的ANDROID用法:如何加载带有索引的对象-范围从



我有一个非常大的JSON文件用于解析和管理。我的JSON文件包含如下结构

[
{"id": "11040548","key1":"keyValue1","key2":"keyValue2","key3":"keyValue3","key4":"keyValue4","key5":"keyValue5","key6":"keyValue6","key7":"keyValue7","key8":"keyValue8","key9":"keyValue9","key10":"keyValue10","key11":"keyValue11","key12":"keyValue12","key13":"keyValue13","key14":"keyValue14","key15":"keyValue15"
},
{"id": "11040549","key1":"keyValue1","key2":"keyValue2","key3":"keyValue3","key4":"keyValue4","key5":"keyValue5","key6":"keyValue6","key7":"keyValue7","key8":"keyValue8","key9":"keyValue9","key10":"keyValue10","key11":"keyValue11","key12":"keyValue12","key13":"keyValue13","key14":"keyValue14","key15":"keyValue15"
},
....
{"id": "11040548","key1":"keyValue1","key2":"keyValue2","key3":"keyValue3","key4":"keyValue4","key5":"keyValue5","key6":"keyValue6","key7":"keyValue7","key8":"keyValue8","key9":"keyValue9","key10":"keyValue10","key11":"keyValue11","key12":"keyValue12","key13":"keyValue13","key14":"keyValue14","key15":"keyValue15"
}
]

我的JSON文件包含来自新闻网站的主题数据,几乎每天这个JSON文件都会急剧增加。

我使用

解析该文件
URL urlLinkSource = new URL(OUTBOX_URL);
urlLinkSourceReader = new BufferedReader(new InputStreamReader(
                        urlLinkSource.openStream(), "UTF-8"));
ObjectMapper mapper = new ObjectMapper();
List<DataContainerList> DataContainerListData = mapper.readValue(urlLinkSourceReader,new TypeReference<List<DataContainerList>>() { }); //DataContainerList contains id, key1, key2, key3..key15

我的问题是我想加载这一行

List<DataContainerList> DataContainerListData = mapper.readValue(urlLinkSourceReader,new TypeReference<List<DataContainerList>>() { }); 

JSON对象的唯一范围-只是第一个10个对象,只是第二个10个对象-因为我需要在我的应用程序中以分页模式显示10个新闻(我一直知道我需要显示哪10个的索引)。加载1万个对象,然后只迭代其中的前10个对象。我的问题是如何加载类似如下:

List<DataContainerList> DataContainerListData = mapper.readValue(urlLinkSourceReader,new TypeReference<List<DataContainerList>>() { }); 

只有索引为FROM -TO的对象(例如从30到40),而不加载整个JSON文件中的所有对象?

这取决于你所说的"load object with indexes from to"的含义,如果你想

读取所有内容,但只绑定子列表这种情况下的解决方案是读取整个流并仅绑定这些索引中的值。你可以使用杰克逊的流媒体api自己做。使用计数器解析流以跟踪实际索引,然后仅将需要的内容绑定到pojo。然而,如果你的文件很大,并且是实时完成的,这不是一个好的解决方案。

只读这些索引之间的数据

如果您的文件很大并且性能很重要,您应该这样做。与其使用单个大文件,不如通过将json数组拆分为多个匹配范围的文件来进行分页,然后将特定文件内容反序列化到数组中。

最新更新