【问题标题】:WSO2: xml to json data mapping in wso2 esb : json message is wrapped in soap envelopeWSO2:wso2 esb 中的 xml 到 json 数据映射:json 消息被包裹在肥皂信封中
【发布时间】:2018-08-29 22:00:07
【问题描述】:

我正在处理一个请求,其中输入消息是 xml,并且必须将其转换为 json。我正在使用数据映射器来执行此操作。 为相同配置的代理服务,下面是它的代码:

<?xml version="1.0" encoding="UTF-8"?>
<proxy name="xmltojson_to_Partneronb" startOnLoad="true" transports="vfs 
http https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="full">
<property name="property_name" value="Initial reading file"/>
</log>
<datamapper config="gov:datamapper/ProducerPartnerOnb.dmc" inputSchema="gov:datamapper/ProducerPartnerOnb_inputSchema.json" inputType="XML" outputSchema="gov:datamapper/ProducerPartnerOnb_outputSchema.json" outputType="JSON"/>
<log level="full">
<property name="property_name" value="after enriching"/>
</log>
<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
<parameter name="transport.PollInterval">1</parameter>
<parameter name="transport.vfs.FileURI">file:///tmp/in</parameter>
<parameter name="transport.vfs.ContentType">application/xml</parameter>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.MoveAfterFailure">file:///tmp/failure</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
<parameter name="transport.vfs.FileNamePattern">.*\.xml</parameter>
<parameter name="transport.vfs.MoveAfterProcess">file:///tmp/out</parameter>
</proxy>

【问题讨论】:

  • 这些在axis2.xml中也没有注释
  • 您需要提供有关您所面临问题的详细信息。我看到的是您提供的代码没有任何问题描述。
  • 对此感到抱歉:(问题是,当我使用此代理服务提取一个 xml 文件并通过数据映射器处理以将其转换为 json 消息时,它正在完成但 json 消息是有soap信封,它只有xml格式。数据映射正常发生,问题是需要发送的最终json消息有xml结构和soap信封。
  • 你能在datamapper之后粘贴日志吗,在你使用属性messagType后我看不到响应或环回中介
  • 这里是输出

标签: json wso2 wso2esb datamapper


【解决方案1】:

从您提供的日志中,SOAP 格式的框架不正确,下面是格式化的 SOAP 响应。

<soapenv:Envelope xmlns:soapenv="schemas.xmlsoap.org/soap/envelope/">
   ;
   <soapenv:Body>
      <jsonObject>
         <FirstName>ABC</FirstName>
         <MiddleInitial>m</MiddleInitial>
         <LastName>LN</LastName>
         <Email>test@test.com</Email>
         <Company>Test</Company>
         <Address1>200 West St</Address1>
         <Address2>hjhjhj</Address2>
      </jsonObject>
   </soapenv:Body>
</soapenv:Envelope>

SOAP 信封结束后有一个; 导致您收到错误,您需要纠正此问题。

【讨论】:

  • 感谢您的快速回复。
  • 我已经检查了代码并进行了纠正,但没有得到正确的结果。数据映射器是转换数据的好方法,还是我应该继续使用其他中介,如 payloadfactory 等...
  • 这取决于适用性,如果有效负载较小,则建议使用有效负载中介,如果有效负载较大或复杂,则建议使用 XSLT 中介
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
相关资源
最近更新 更多