Доступ к элементу Json в переменной потока — Mule 3.7

Можем ли мы получить доступ к элементу json внутри переменных потока в Mule?

Например: Мое значение flowVar равно { "Input1": { "Value1": "UNITED STATES" } }

Как я могу получить доступ к элементу «Value1», используя MEL в муле?

Спасибо, РОА


person ROA    schedule 02.02.2017    source источник
comment
Является ли ваш flowVar строковым представлением приведенного выше примера или это HashMap, Stream или что-то еще?   -  person Chad Gorshing    schedule 03.02.2017


Ответы (4)


Правильный ответ

#[flowVars.theVariable.Input1.Value1]

но добраться сюда нужно много, что делать. Вы должны создать переменную соответствующим образом, чтобы она соответствовала вашему описанию. Также пропущено имя переменной, но оно вам все равно нужно. Вот код

    <flow name="AccessFlowVariable">
        <poll doc:name="Poll">
            <fixed-frequency-scheduler frequency="10000000"/>
            <logger message="Flow started" level="INFO" doc:name="Logger"/>
        </poll>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-variable variableName="theVariable"><![CDATA[%dw 1.0
%output application/java
---
{ "Input1": { "Value1": "UNITED STATES" } }]]></dw:set-variable>
        </dw:transform-message>
        <logger message="#[flowVars.theVariable.Input1.Value1]" level="INFO" doc:name="Logger"/>
        <logger level="INFO" doc:name="Logger"/>
    </flow>

и вот результат введите здесь описание изображения

person Alex    schedule 02.02.2017
comment
Ваш вывод на DW — это Java, поэтому результирующий тип (и показанный на вашем изображении выше) — java.util.LinkedHashMap. Итак, точечная запись работает, я думаю, он спрашивает, что flowVar является строкой, а не хэш-картой. - person Chad Gorshing; 03.02.2017

попробуйте приведенное ниже выражение,

#[json:/Input1/Value1]
person Senthil c    schedule 02.02.2017

Для этого вы можете использовать функцию dw или выражение пути json. Примеры:

[dw('полезная нагрузка.Request.name')]

[json:Запрос/имя]

person Deep    schedule 06.02.2017

«Можем ли мы получить доступ к элементу json внутри переменных потока в Mule?»: Да, мы можем получить доступ к элементу json внутри переменной потока.

«Как я могу получить доступ к элементу« Value1 », используя MEL в муле?» Скажем, если вы сохранили этот json в переменной потока (xyz), вы можете получить к нему доступ, используя следующий синтаксис: flowVars.xyz.Input1.Value1

person Abani Patra    schedule 03.02.2017