我希望实现类似于CSV流处理的功能:
//read input file
.split(body().tokenize("\n", 100, false)).streaming()
.unmarshal(new BindyCsvDataFormat( ...
我可以控制输入文件的内容,例如,我可以让每个JSON对象都在新行上,而不需要JSON起始数组和逗号:
{"id": "foo1"}
{"id": "foo2"}
...
然后遵循与CSV中相同的流程(拆分和流),但我无法使用ListJacksonDataFormat
或.json(JsonLibrary.Jackson)
进行解组
如何做到这一点?或者有没有其他方法来阅读大JSON数组?
**注意:**这个处理必须很快,所以我不能像here解释的那样先解组到csv,然后再编组JSON(这似乎是一个粗略的解决方案)。
2条答案
按热度按时间mftmpeh81#
您可以使用jsonpath来分割JSon消息(并在Splitter EIP中为更大的消息启用流)
https://github.com/apache/camel/blob/master/components/camel-jsonpath/src/main/docs/jsonpath-language.adoc
twh00eeo2#
我最终得到了以下解决方案:
是
例如,处理一个3.5 GB的文件需要约1.2分钟。