使用Jackson来流解析Json对象数组
我有一个包含对象的json数组的文件:
[{“ test1”:“ abc”},{“ test2”:[1,2,3]}]
我希望使用Jackson的JsonParser来从此文件中获取输入流,并且在每次调用.next()时,我希望它从数组中返回一个对象,直到用完对象或失败为止。
这可能吗?
用例:我有一个带有json数组的大文件,其中填充有大量具有不同架构的对象。我想一次获得一个对象,以避免将所有内容加载到内存中。
编辑:
我完全忘了提。我的输入是随着时间的推移添加到的字符串。随着时间的推移,它会慢慢累积json。我希望能够通过从字符串中删除已解析对象的对象来解析它。
但是我想那没关系!我可以手动执行此操作,只要jsonParser将索引返回到字符串中即可。
回答:
您正在寻找的是所谓的Jackson Streaming
API。这是使用Jackson流API的代码片段,可以帮助您实现所需的功能。
JsonFactory factory = new JsonFactory();JsonParser parser = factory.createJsonParser(new File(yourPathToFile));
JsonToken token = parser.nextToken();
if (token == null) {
// return or throw exception
}
// the first token is supposed to be the start of array '['
if (!JsonToken.START_ARRAY.equals(token)) {
// return or throw exception
}
// iterate through the content of the array
while (true) {
token = parser.nextToken();
if (!JsonToken.START_OBJECT.equals(token)) {
break;
}
if (token == null) {
break;
}
// parse your objects by means of parser.getXxxValue() and/or other parser's methods
}
以上是 使用Jackson来流解析Json对象数组 的全部内容, 来源链接: utcz.com/qa/411570.html