Медиатор DataMapper: ошибка отображения - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу преобразовать мои XML данные в JSON с помощью преобразователя данных. Но когда я добавил маппер в поток ESB и обеспечил ввод XML и вывод JSON. Он говорит, что DataMapper медиатор: сопоставление не удалось. Пожалуйста, объясните мне, что не так с XML и JSON?

Мой XML вход, как показано ниже: -

<?xml version="1.0" encoding="UTF-8"?>
<FIXMLResponse xmlns="http://www.finacle.com/fixml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Header>
      <ResponseHeader>
         <RequestMessageKey>
            <RequestUUID>FEBA_1553756445880</RequestUUID>
            <ServiceRequestId>executeFinacleScript</ServiceRequestId>
            <ServiceRequestVersion>10.2</ServiceRequestVersion>
            <ChannelId>COR</ChannelId>
         </RequestMessageKey>
         <ResponseMessageInfo>
            <BankId>04</BankId>
            <TimeZone>System.CurrentSystemTimeZone</TimeZone>
            <MessageDateTime>2020-02-27T20:25:13.697653+05:30</MessageDateTime>
         </ResponseMessageInfo>
         <UBUSTransaction>
            <Id />
            <Status />
         </UBUSTransaction>
         <HostTransaction>
            <Id />
            <Status>SUCCESS</Status>
         </HostTransaction>
         <HostParentTransaction>
            <Id />
            <Status />
         </HostParentTransaction>
      </ResponseHeader>
   </Header>
   <Body>
      <executeFinacleScriptResponse>
         <ExecuteFinacleScriptOutputVO xsi:type="xsd:string" />
         <executeFinacleScript_CustomData>
            <STATUS>SUCCESS</STATUS>
            <ERROR>
               <FIBUSINESSEXCEPTION>
                  <ERRORDETAIL>
                     <ERRORCODE>ERR0008</ERRORCODE>
                     <ERRORDESC>Invalid NIC Passed</ERRORDESC>
                     <ERRORTYPE>BE</ERRORTYPE>
                  </ERRORDETAIL>
               </FIBUSINESSEXCEPTION>
            </ERROR>
         </executeFinacleScript_CustomData>
      </executeFinacleScriptResponse>
   </Body>
</FIXMLResponse>

Мой JSON Выход (преобразование выше XML в JSON с помощью онлайн-инструмента), как показано ниже: -

{
   "Header": {
      "ResponseHeader": {
         "RequestMessageKey": {
            "RequestUUID": "FEBA_1553756445880",
            "ServiceRequestId": "executeFinacleScript",
            "ServiceRequestVersion": "10.2",
            "ChannelId": "COR"
         },
         "ResponseMessageInfo": {
            "BankId": "04",
            "TimeZone": "System.CurrentSystemTimeZone",
            "MessageDateTime": "2020-02-27T20:25:13.697653+05:30"
         },
         "UBUSTransaction": {
            "Id": null,
            "Status": null
         },
         "HostTransaction": {
            "Id": null,
            "Status": "SUCCESS"
         },
         "HostParentTransaction": {
            "Id": null,
            "Status": null
         }
      }
   },
   "Body": {
      "executeFinacleScriptResponse": {
         "ExecuteFinacleScriptOutputVO": {
            "@type": "xsd:string"
         },
         "executeFinacleScript_CustomData": {
            "STATUS": "SUCCESS",
            "ERROR": {
               "FIBUSINESSEXCEPTION": {
                  "ERRORDETAIL": {
                     "ERRORCODE": "ERR0008",
                     "ERRORDESC": "Invalid NIC Passed",
                     "ERRORTYPE": "BE"
                  }
               }
            }
         }
      }
   }
}

1 Ответ

1 голос
/ 28 февраля 2020

Если вы просто хотите выполнить преобразование XML в JSON без настройки каких-либо значений, вы можете использовать свойство messageType для преобразования и получения ответа. Посмотрите пример конфигурации прокси ниже.

<proxy xmlns="http://ws.apache.org/ns/synapse"
      name="tojson"
      transports="https,http"
      statistics="disable"
      trace="disable"
      startOnLoad="true">
  <target>
     <inSequence>
        <property name="messageType" value="application/json" scope="axis2"/>
        <respond/>
     </inSequence>
  </target>
  <description/>
</proxy>

Если вы отправите полезную нагрузку XML на этот прокси, он отправит ответ JSON.

...