我有一个 JDBC 连接器,它从数据库中检索值,并将它们从对象映射到 JSON。现在我想从 json 中提取特定值来流变量。当我尝试记录 #[message.payload] 时,我在日志中获得了 JSON 格式的完整有效负载。但是,当我尝试选择一个属性(例如 json 中的 testattribute)#[message.payload.testattribute] 时,我得到 mule 表达式错误。如何引用 json 值?
问问题
14473 次
4 回答
3
一旦有效负载是 JSON 字符串,您就不能再使用表达式从中提取任何内容。
所以要么:
- 在将有效负载转换为 JSON 之前,使用 MEL 将值提取到流变量中,
- 将 JSON 负载转换为 POJO 或 Map/Lists,使用 MEL 将值提取到流变量中,然后将负载重新转换回 JSON。
于 2013-09-08T15:29:21.977 回答
3
如果您的要求是从 json 数据中获取值,您可以使用简单的 MEL 表达式,例如
#[json:<name of the node>]
例如,如果您有这样的示例 json 数据
{
"token" : 123,
"id" : 456,
"email" : "abc@abc.com",
"status" : "Success"
}
如果您想从数据中获取 id,只需使用下面的简单 MEL。
#[json:'id']
于 2017-08-10T14:06:29.703 回答
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]
于 2015-07-21T04:01:05.710 回答
1
使用组件如下
- 对象 - 字符串
- 对象 - JSON
然后你可以使用json表达式直接提取使用值作为#{json:email},在下面的xml中我使用变量组件在“var1”流变量中设置#{json:email}以提高可用性
注意: json 表达式甚至在 5.x 的 studio 版本中可用
<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"/>
于 2015-12-24T09:46:26.647 回答