我有一个JDBC COnnector,它从数据库中检索值,并将它们从对象映射到JSON。现在我想从json中提取特定值到流变量。当我尝试记录#[message.payload]时,我在日志中获得了JSON格式的完整有效负载。但是,当我尝试选择一个属性(例如,json中的testattribute)#[message.payload.testattribute]时,我得到mule表达式错误。我如何参考json值?
答案 0 :(得分:3)
一旦有效载荷是JSON字符串,就不能再用表达式从中提取任何内容了。
所以:
答案 1 :(得分:3)
如果您的要求是从json数据中获取值,您可以使用简单的MEL表达式,如
#[json:<name of the node>]
例如,如果你有像这样的样本json数据
{
"token" : 123,
"id" : 456,
"email" : "abc@abc.com",
"status" : "Success"
}
如果你想从数据中获取id,只需使用下面简单的MEL。
#[json:'id']
答案 2 :(得分:2)
Mule具有JSON-to-Object转换器,可用于获取JSON元素。 例如,如果您的JSON如下: -
{
"token" : 123,
"id" : 456,
"email" : "abc@abc.com",
"status" : "Success"
}
现在,要提取元素,您需要使用: -
<json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object" />
然后可以提取: - #[message.payload.email]
或#[message.payload.status]
答案 3 :(得分:1)
使用以下组件
然后你可以使用json表达式直接提取值为#{json:email} , 在xml下面,我使用变量组件在&#34; var1&#34;中设置了#{json:email}。流量变量的可用性
注意:json表达式甚至可以在5.x
的工作室版本中使用 <object-to-string-transformer doc:name="Object to String"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<set-variable variableName="var1" value="#[json:email]" doc:name="Variable"/>