我将数据(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
答案 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");