2014-12-04 2 views
0

Мой мул поток:мул полезной нагрузки JSON в БД значения возвращает нуль из REST

<flow name="classmappingFlow1" doc:name="classmappingFlow1"> 
     <http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="${port}" path="insertClass" connector-ref="ConnectorWithoutMuleSession" doc:name="HTTP"/> 
     <jersey:resources doc:name="REST"> 
      <component class="com.mycompany.mulesoft.rest.AccountMappingService"/> 
     </jersey:resources> 
     <json:json-to-object-transformer doc:name="JSON to Object"/> 
     <logger message="Payload======#[payload]" level="INFO" doc:name="Logger"/> 
     <logger message="=====Company===#[payload.Company]" level="INFO" doc:name="Logger"/> 
     <db:insert config-ref="Oracle_Configuration" doc:name="Database"> 
      <db:parameterized-query><![CDATA[insert into SIAS_CONFIGURATION values(1, 1,1234,#[payload.Company],'Y','N','Y','you',sysdate,'you',sysdate)]]></db:parameterized-query> 
     </db:insert> 
    </flow> 

консоли:

Payload======[{"Company":"KLM","Class":"Y","Location":"N","Department":"Y","EmplId":"1234"}] 
=====Company===null 

JSON данных:

[ 
{ 
"Company":"KLM", 
"Class":"Y", 
"Location":"N", 
"Department":"Y", 
"EmplId":"1234" 
} 
] 

Rest Компонент:

@POST 
@Path("/setClass") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public String classSettings(@Payload String content){ 
    return content; 
} 

Вопрос: Я получаю нулевые значения и данные (пустой), вставленный дБ

ответ

1

Использования returnClass="java.util.List" в json:json-to-object-transformer после джерси: ресурсы как следующее: -

<json:json-to-object-transformer returnClass="java.util.List" doc:name="JSON to Object"/> 
+0

Я попробовал это, didnot работы. Данные уже присутствуют в полезной нагрузке, т. Е. Отображаются в первом регистраторе: Полезная нагрузка ====== – bekur

+0

Если вы не используете ** returnClass = "java.util.List" ** в ** json: json-to -объект-трансформатор ** .. вы не сможете получить значение в ** # [payload.Company] ** ... Данные отображаются в первом журнале, потому что в журнале, который вы используете ** # [message.payload] ** и, следовательно, отображается вся полезная нагрузка ... но так как вы не использовали возвращаемый класс ** java.util.List **, вы не получите никакого значения во втором журнале ** # [loadload.Company] ** и он будет показывать нуль всегда –

+0

Да, правильно, но мой вход был массивом json-данных, измененным # [payload [0] .Company], чтобы получить данные из массива. это была причина, по которой данные ранее не печатались. – bekur

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