Java Apache Camel XML JSON marshal创建了At-Signs

时间:2016-09-07 09:25:55

标签: java json xml apache-camel

我有两个问题:  1.为什么在json文件中创建了@ -Signs?  2.为什么xml-json编组后进程仍在运行? (看看我的EclipseConsole-Screenshot。我必须在每次运行时终止进程。)

MyRouteBuilder配置方法

public void configure() throws Exception{

    XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat();

    xmlJsonFormat.setEncoding("UTF-8");
    xmlJsonFormat.setForceTopLevelObject(true);
    xmlJsonFormat.setTrimSpaces(true);
    xmlJsonFormat.setRootName("newRoot");
    xmlJsonFormat.setSkipNamespaces(true);
    xmlJsonFormat.setRemoveNamespacePrefixes(true);
    xmlJsonFormat.setExpandableProperties(Arrays.asList("d", "e"));

    from("timer:timer1?period=100&repeatCount=1")
    .to("https://...foo")
    .marshal(xmlJsonFormat)
    .to("file:target/messages/others?noop=true&fileName=message.json");
}

输入xml - 示例细分

<hotel name="Hotel foo" cat="5" mh="xxx"/>
<date from="2016-10-16" to="2016-10-18"/>

输出json - 示例段

        "hotel" : {
        "@name" : "Hotel foo",
        "@cat" : "5",
        "@mh" : "xxx"
    },
    "date" : {
        "@from" : "2016-10-18",
        "@to" : "2016-10-19"
    }, 

Eclipse Console

1 个答案:

答案 0 :(得分:1)

这就是XmlJson如何开箱即用,以区分值是XML属性还是XML值。

Camel使用的JSon lib项目不再那么活跃了,所以你可能无法让它们添加一些功能来配置是否输出@