2017-01-14 25 views
0

Я использую AnyPoint 6.1 и Mule 3.8.1 и имеет flowVar который содержит объект JSON, который выглядит следующим образом:Получить значение поля из массива JSON в Mule flowVars

{ 
    "stores": [ 
    [ 
     "store1" 
    ], 
    [ 
     "store2" 
    ] 
    ] 
} 

While I проходного полезной нагрузки I хотите вытащить значение из flowVars, которое относится к обрабатываемому объекту из полезной нагрузки, используя значение счетчика в качестве позиции массива. Я не хочу переместить его в массив, потому что тогда мне нужно будет добавить дополнительный шаг для форматирования значения для использования в запросе базы данных, например. добавить ", которые уже есть в формате JSON

Как я могу это сделать

До сих пор у меня что-то вроде этого, но это не так:.?

#[flowVars.storeData[json:stores[0]]] 

Благодарности

+1

Вы уверены, что упомянутая выше полезная нагрузка правильная? Массив внутри массива не имеет смысла. Я бы предположил, что следующий json будет иметь больше смысла {«магазины»: ["store1", "store2"]}. –

ответ

0

Вот Например, я думаю, что имитирует то, что вы делаете. В полезной нагрузке я устанавливаю json {"stores": [["store1"], ["store2"]]}. Перед тем, как поместить его в переменную, я использую преобразование message (dataweave), чтобы вернуть индексированное хранилище в виде строки. Загрузка полезных данных [1] возвращает массив ["store2"] и jo inBy "" удаляет скобки массива, оставляя "store2".

 <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> 
    <flow name="myprojectFlow"> 
     <http:listener config-ref="HTTP_Listener_Configuration" path="/stores" allowedMethods="GET" doc:name="HTTP"/> 
     <set-payload value="{&quot;stores&quot;:[[&quot;store1&quot;],[&quot;store2&quot;]]}" doc:name="Set Payload"/> 
     <dw:transform-message metadata:id="adf13229-f050-43dd-bffb-ca2319a3723b" doc:name="Transform Message"> 
      <dw:input-payload mimeType="application/json"/> 
      <dw:input-variable mimeType="application/json" variableName="mystores"/> 
      <dw:set-payload><![CDATA[%dw 1.0 
      %output application/json 
      --- 
      payload.stores[1] joinBy "" 
      ]]></dw:set-payload> 
     </dw:transform-message> 
     <set-variable variableName="mystore" value="#[payload]" mimeType="application/json" doc:name="Variable"/> 
     <logger message="#[payload]" level="INFO" doc:name="Logger"/> 
    </flow> 

В регистратор возвращается:

INFO 2017-01-17 15: 31: 24242 [[MyProject] .HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: "store2"

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

  • Нет связанных вопросов^_^