Jackson:通过数据绑定流JSON数组?
我有一个JSON文件,其结构如下:Jackson:通过数据绑定流JSON数组?,json,data-binding,jackson,streaming,Json,Data Binding,Jackson,Streaming,我有一个JSON文件,其结构如下: [ obj1, obj2, ... objN ] 所有子对象都是完全自包含的,即它们之间没有交叉引用。问题是文件作为一个整体是巨大的(在根数组中大于100k个条目) Jackson中是否有任何方法可以通过数据绑定来流式传输根数组的内容,从而使根数组永远不会完全驻留在主内存中?我希望避免使用低级的JsonGenerator/JsonParser API。是的。检查ObjectReader(使用ObjectMapper中的各种方法
[
obj1,
obj2,
...
objN
]
所有子对象都是完全自包含的,即它们之间没有交叉引用。问题是文件作为一个整体是巨大的(在根数组中大于100k个条目)
Jackson中是否有任何方法可以通过数据绑定来流式传输根数组的内容,从而使根数组永远不会完全驻留在主内存中?我希望避免使用低级的JsonGenerator/JsonParser API。是的。检查
ObjectReader
(使用ObjectMapper
中的各种方法构造,如.readerFor(ElementType.class)
),然后检查其readValues()
方法,该方法返回MappingIterator
(对于您使用的任何类型)。此方法一次只绑定一个项
如果值位于根级别数组中,则应按原样工作。如果它们在JSON结构中的某个更深的地方,那么您必须首先构造
JsonParser
,然后(使用nextToken()
)迭代到第一个值,但之后您仍然可以创建MappingIterator
,以实现高效的逐项绑定。谢谢,这正是我需要开始的提示!