mule org.json.JSONObject, возвращающий значение свойства как ноль, хотя свойство json имеет значение для него - PullRequest
0 голосов
/ 25 апреля 2018

Я использую приведенный ниже код для преобразования входной строки полезной нагрузки в json в муле.Код ниже иногда работает, а иногда нет.это не работает в автономном режиме и работает на студии.Не в состоянии точно определить причину этого.но на основе регистраторов, которые я вижу, что значение свойства становится нулевым после выражения выражения.Я подозреваю, что это может быть с банкой, которая здесь привыкает.я все еще копаю дальше.

<logger message="input: #[payload]" level="INFO" doc:name="Logger"/>
         <set-payload value="#[payload.'data']" mimeType="application/json" doc:name="Set Payload" encoding="ISO-8859-2"/>
        <logger message="createConnection: #[payload]" level="INFO" doc:name="Logger"/>
        <expression-component doc:name="Expression"><![CDATA[String input = payload;    

payload = new org.json.JSONObject(input);
]]></expression-component>
<logger message="before json to object: #[payload.con_id] #[payload.'con_id']" level="INFO" doc:name="Logger"/>
        <json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>

Ввод JSON:

data: {"name":"QA_tst2","description":"tst","con_id":10,"con_connection_id":null,
"verticalParam":[{"param_value":"abc","param_name":"Host"},{"param_value":"21","param_name":"Port"}],"CON_CATEGORY_NAME":"File"}

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Я выяснил текущую проблему. если есть какой-либо регистратор, добавленный для извлечения свойств из полезной нагрузки сразу после компонента выражения, то это приводит к дальнейшему ухудшению. если вы просто удалите регистратор, который был добавлен после компонента выражения, то после преобразования json в объект я смогу извлечь значения. это решает текущую проблему. но я хотел бы понять разницу между извлечением свойств # [payload.con_id] против # [payload.'con_id ']. я могу начать отдельный разговор для того же.

0 голосов
/ 26 апреля 2018

Я не думаю, что нотация будет работать для JSONObject, попробуйте использовать

payload.get('con_id')

согласно javadoc: https://stleary.github.io/JSON-java/org/json/JSONObject.html.

Причина, по которой это не будет работать с нотациейвы пробовали, заключается в том, что Mule поддерживает эту запись для Карт, а org.json.JSONObject не реализует java.util.Map.Вместо этого вы можете попробовать использовать javax.json.JSONObject , что будет поддерживать эту запись.

...