Apache Camel - 以一个(太大)行以JSON格式导出数据

时间:2017-09-28 08:46:10

标签: json apache-camel

我将数据(Java DTO' s)导出为JSON格式的文本文件,最后使用以下路径部分:

    JsonDataFormat jsonDataFormat = new JsonDataFormat(JsonLibrary.Gson);
    jsonDataFormat.setPrettyPrint(Boolean.TRUE);

    // ...

    .setProperty(Exchange.CHARSET_NAME, constant(UTF))
    .marshal(jsonDataFormat) //.json(JsonLibrary.Gson)
    .convertBodyTo(String.class, UTF) // 2. change to "UTF" encoding
    .convertBodyTo(byte[].class, UTF) // 3. convert string to byte
    .to("file:/?charset=utf-8")//

由于存在大量数据,因此输出很大。 那不是问题。问题在于它全部写在一条长线上。

要测试数据,我必须打开这些文件。我喜欢使用Notepad ++,因为使用该编辑器,我可以使用" JSON Viewer"插件。

当这些文件大于特定大小(大约100 KB或1亿个字符)时,无法使用Notepad ++打开该文件。 但不仅如此。由于这条长线,文件的处理很困难。

因此我正在寻找一种方法来插入一些"回车"使用"漂亮的印刷"。 上面的代码不起作用。知道为什么吗?或者在不使用其他库的情况下达到目的的任何其他方式?

驼版本> 2.14.0 GSON版本> 2.2.2

1 个答案:

答案 0 :(得分:0)

如Camel JSON文档Camel JSON中所述 你可以在xml中设置dataFormat:

<dataFormats>
    <json id="gson" prettyPrint="true" library="Gson"/>
</dataFormats>

并且在Java DSL中你可以使用它:

.marshal().json(JsonLibrary.Gson, true)
.convertBodyTo(String.class, UTF)
.convertBodyTo(byte[].class, UTF)
.to("file:/?charset=utf-8");