java安卓使用Jackson库:如何加载索引范围从到的对象
我有非常大的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条新闻的索引)。加载10000个对象并只迭代其中的前10个对象,这完全是愚蠢的。所以我的问题是如何加载 与此类似:
List<DataContainerList> DataContainerListData = mapper.readValue(urlLinkSourceReader,new TypeReference<List<DataContainerList>>() { });
只有索引从-TO(例如从30到40)的对象,而不加载整个JSON文件中的所有对象
问候
# 1 楼答案
这取决于您所说的“从到加载具有索引的对象”的含义
读取所有内容,但仅绑定子列表 这种情况下的解决方案是读取整个流,并仅绑定这些索引中的值。 您可以使用jacksons流式api并自己动手。解析流使用计数器跟踪实际索引,然后仅绑定到您需要的POJO。 但是,如果您的文件很大并且是实时完成的,那么这不是一个好的解决方案
仅读取这些索引之间的数据
如果您的文件很大,而且性能很重要,那么应该这样做。不需要一个大文件,而是通过将json数组拆分为多个与范围匹配的文件来进行分页,然后将特定文件内容反序列化到数组中
希望这有助于