Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jackson:通过数据绑定流JSON数组?_Json_Data Binding_Jackson_Streaming - Fatal编程技术网

Jackson:通过数据绑定流JSON数组?

Jackson:通过数据绑定流JSON数组?,json,data-binding,jackson,streaming,Json,Data Binding,Jackson,Streaming,我有一个JSON文件,其结构如下: [ obj1, obj2, ... objN ] 所有子对象都是完全自包含的,即它们之间没有交叉引用。问题是文件作为一个整体是巨大的(在根数组中大于100k个条目) Jackson中是否有任何方法可以通过数据绑定来流式传输根数组的内容,从而使根数组永远不会完全驻留在主内存中?我希望避免使用低级的JsonGenerator/JsonParser API。是的。检查ObjectReader(使用ObjectMapper中的各种方法

我有一个JSON文件,其结构如下:

[
    obj1,
    obj2,
    ...
    objN
]
所有子对象都是完全自包含的,即它们之间没有交叉引用。问题是文件作为一个整体是巨大的(在根数组中大于100k个条目)


Jackson中是否有任何方法可以通过数据绑定来流式传输根数组的内容,从而使根数组永远不会完全驻留在主内存中?我希望避免使用低级的JsonGenerator/JsonParser API。

是的。检查
ObjectReader
(使用
ObjectMapper
中的各种方法构造,如
.readerFor(ElementType.class)
),然后检查其
readValues()
方法,该方法返回
MappingIterator
(对于您使用的任何类型)。此方法一次只绑定一个项


如果值位于根级别数组中,则应按原样工作。如果它们在JSON结构中的某个更深的地方,那么您必须首先构造
JsonParser
,然后(使用
nextToken()
)迭代到第一个值,但之后您仍然可以创建
MappingIterator
,以实现高效的逐项绑定。

谢谢,这正是我需要开始的提示!