将json数据转换为xml时面临的问题:mule esb

将json数据转换为xml时面临的问题:mule esb,mule,mule-studio,mule-component,Mule,Mule Studio,Mule Component,我尝试将json数据转换为xml格式。但只有一半的数据被转换成xml 我的有效载荷是 {"orders":[{"orderName":"Laptop","price":34000,"Date":"2014/01/12","Type":"DELL","stock":52,"code":"152666AS"}, {"orderName":"Chip","price":345,"Date":"2014/02/20","Type":"DELL","stock":50,"code":"15266

我尝试将json数据转换为xml格式。但只有一半的数据被转换成xml

我的有效载荷是

{"orders":[{"orderName":"Laptop","price":34000,"Date":"2014/01/12","Type":"DELL","stock":52,"code":"152666AS"},

    {"orderName":"Chip","price":345,"Date":"2014/02/20","Type":"DELL","stock":50,"code":"152666AW"},

    {"orderName":"Laptop1","price":35000,"Date":"2015/02/13","Type":"DELL1","stock":51,"code":"152666AX"}]}
但在输出中,我只得到一个json项

    <?xml version='1.0'?>
<orders>
<orderName>Laptop</orderName>
<price>34000</price>
<Date>2014/01/12</Date>
<Type>DELL</Type>
<stock>52</stock>
<code>152666AW</code>
</orders>
我的流程如下

<flow name="testFlow">
        <http:listener config-ref="HTTP_Quickbook" path="/" doc:name="HTTP"/>
        <connector-test:my-processor config-ref="ConnectorTest__Configuration_type_strategy" content="APP" doc:name="ConnectorTest"/>
        <json:json-to-xml-transformer  mimeType="application/json" doc:name="JSON to XML"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>

</flow>
InputStream input = new FileInputStream(new File("test.json"));
            OutputStream output = System.out;
            XMLInputFactory inputFactory = XMLInputFactory.newInstance();
            inputFactory.setProperty(XMLInputFactory.IS_COALESCING, true);
            XMLEventReader reader = inputFactory.createXMLEventReader(input);

            XMLOutputFactory outputFactory = new JsonXMLOutputFactory();
            outputFactory.setProperty(JsonXMLOutputFactory.PROP_PRETTY_PRINT, true);
            XMLEventWriter writer = outputFactory.createXMLEventWriter(output);

            writer = new XMLMultipleEventWriter(writer, false,"/orders");

            writer.add(reader);

            reader.close();
            writer.close();
现在我有以下错误

com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]

com.ctc.wstx.exc.WstxUnexpectedCharException:prolog中意外的字符“{”(代码123);预期的“您的问题来自于对
订单数组的转换,该数组失败并且只返回一个条目

在幕后,
json:json-to-xml转换器
使用Staxon进行xml-to-json转换

我们可以看到,
PROP\u MULTIPLE\u PI
false
PROP\u AUTO\u ARRAY
未设置为
true
,因此只考虑数组中的一项,其他项被删除


因此,您最好也使用Staxon编写您自己的转换器,使用您想要的数组处理设置进行配置,或者使用Groovy XML Markup builder以一种简洁的方式生成XML。

了解您想要的json

{
      "ocs:price": {
        "@exponent": "-1",
        "#text": "2"
      }
    }
这是要转换的格式,例如,从JSON转换为XML,如下所示:

<ocs:price exponent="-1">2</ocs:price> 

我可以建议你做一件事来满足你的工作要求

如果希望从json生成xml

做下面的事情

将set payload component添加到流中,并显式地将值指定为

{“根”:#[payload]}

它会起作用,我可以从粘贴的示例数据中生成xml数据


请尝试并发布您的状态

谢谢您的回复。.我尝试了您的解决方案。我遇到另一个错误。.请检查oncecom.ctc.wstx.exc.WstxUnexpectedCharException:prolog中意外的字符“{”(代码123);应为“您似乎正在使用XML解析器解析JSON”。
import net.sf.json.JSON
import net.sf.json.JSONSerializer
import net.sf.json.xml.XMLSerializer

String str = '''{
  "ocs:price": {
    "@exponent": "-1",
    "#text": "2"
  }
}'''
JSON json = JSONSerializer.toJSON( str )
XMLSerializer xmlSerializer = new XMLSerializer()
xmlSerializer.setTypeHintsCompatibility( false )
String xml = xmlSerializer.write( json )
System.out.println(xml)