我正在尝试逐个对象地流式传输 JSON 数组,但我需要将其作为原始 JSON 字符串导入。
给定一个输入数组,如下所示:
[
{"object":1},
{"object":2},
...
{"object":n}
]
我正在尝试遍历字符串:
{"object":1}
{"object":2}
...
{"object":n}
我可以使用流 API 导航结构,以验证我是否遇到了一个对象,以及所有这些,但我认为我获取 String 的方式是理想的。
目前:
//[...]
//we have read a START_OBJECT token
JsonNode node = parser.readValueAsTree();
String jsonString = anObjectMapper.writeValueAsString(node);
//as opposed to String jsonString = node.toString() ;
//[...]
我想整个 JsonNode 结构的构建涉及大量开销,如果我只是重新序列化,这是没有意义的,所以我正在寻找更好的解决方案。类似这样的东西是理想的:
//[...]
//we have read a START_OBJECT token
String jsonString = parser.readValueAsString()
//or parser.skipChildrenAsString()
//[...]
对象显然不像
{"object":1}
这就是为什么我不想浪费时间做毫无意义的节点构建。可能有一些理想的方法,涉及将内容映射到对象并使用它,但我无法做到这一点。我需要原始 JSON 字符串(一次一个对象)来处理现有代码。
任何建议或意见表示赞赏。谢谢!
编辑: parser.getText() 将当前标记作为文本返回(例如 START_OBJECT -> "{"),但不返回对象的其余部分。
Edit2:使用 Streaming API 的动机是一个一个地缓冲对象。实际的 json 文件可能会很大,每个对象在使用后都可以丢弃,所以我只需要迭代。