2016-08-23 3 views
0

Я делаю вызов webservice от Mule в другой системе, используя mule anypoint studio. Вызов происходит нормально, и я вижу сообщение, возвращенное из внешней системы. Теперь я пытаюсь передать вход для этого вызова webservice с использованием строки JSON. Это значение будет регистрироваться во внешней системе, к которой мы обращаемся. Я использую Datamapper для этого и выбираю файл JSON в конфигурации карты данных. Карта происходит без какой-либо ошибки, но когда я вызываю поток мула (через http-коннектор).Ошибка при разборе JSON в Mule

Я вижу эту ошибку на консоли

Неожиданный символ ('N' (код 78)): ожидал двойные кавычки, чтобы старт имя поля в [Источник: java.io.InputStreamReader @ 687aae57; линия: 1, колонка: 3] ОШИБКА 2016-08-23 18: 42: 44405 [WatchDog_0] org.jetel.graph.runtime.SingleThreadWatchDog: Сведения об ошибке: org.jetel.exception.JetelRuntimeException: Компонент [JSON READER: JSON_READER0] закончил с статусом ERROR. org.codehaus.jackson.JsonParseException: Неожиданный символ ('N' (код 78)): ожидал двойную кавычку, чтобы начать имя поля Трассировка стека прерываний корня: org.codehaus.jackson.JsonParseException: Неожиданный символ ('N '(код 78)): ожидал двойной кавычки, чтобы начать имя поля в [Источник: java.io.InputStreamReader в [Источник: java.io.InputStreamReader @

Я думал, что проблема с JSON, но не в состоянии выяснить, где .. Мой JSON-файл выглядит как

{"receiveMessageFromMule":"Invocation Message from Mule"} 

Может ли кто-нибудь помочь?

ответ

0

@Angel, согласно ошибке, данные JSON, полученные с именами без кавычек (не имеют двойных кавычек, «для имен полей»). Вам необходимо включить jackson mapper для обработки имен без кавычек, это может быть сделано путем добавления JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES конфигурации ObjectMapper.

Вы можете настроить трансформатор JSON путем введения пользовательского ObjectMapper с помощью пружины в муле. Ниже приведен фрагмент коды для справки

<spring:bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" /> 
    <spring:bean 
     class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
     <spring:property name="targetObject" ref="jacksonObjectMapper" /> 
     <spring:property name="targetMethod" value="configure" /> 
     <spring:property name="arguments"> 
      <spring:list> 
       <spring:value>ALLOW_UNQUOTED_FIELD_NAMES</spring:value> 
       <spring:value>true</spring:value> 
      </spring:list> 
     </spring:property> 
    </spring:bean> 

    <json:object-to-json-transformer mapper-ref="jacksonObjectMapper" /> 

Надеется, что это помогает

Смежные вопросы