【问题标题】:How to perform string operation on JSON MEL in mule esb如何在 mule esb 中对 JSON MEL 执行字符串操作
【发布时间】:2015-07-21 14:55:20
【问题描述】:

我想对 MEL 执行一些字符串操作我在 MEL 中有以下表达式

<logger message="#[json:xy/PID/xy.3/AC]" level="INFO" doc:name="Logger"/>

输出是

19901026000000

我想提取 1st 4 digit 然后 6,7 digit 。

我该怎么做??

谢谢

【问题讨论】:

  • 这个要求对每个请求都有效吗?即前 4 位数字和第 6、7 位数字?
  • 是..需要解压

标签: mule mule-studio mule-el


【解决方案1】:

分两步试试怎么样?

<set-variable variableName="result" value="#[json:ADT_A01/PID/PID.3/CX.1]" />
<set-variable variableName="result" value="#[result.substring(0,4)]#[result.substring(5,7)]" />

【讨论】:

  • 只是想绕开 MEL,here 提到 MEL 没有明确的 JSON 处理。你们使用的语法是自Mule 3.3以来已弃用的旧表达式评估,需要您确认我的理解
  • 你是对的。在不使用已弃用的 JSON 表达式评估器的情况下执行此操作的另一种方法是使用 json-to-object-transformer 转换为列表和地图,并使用常规的对象和属性导航。
【解决方案2】:

正如@Ryan Hoegg 回答中的 cmets 所述,JSON 表达式评估器自 Mule 3.3 以来已被弃用,因此最好的方法是使用 json 对象转换器

&lt;json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.HashMap"/&gt;

然后使用常规的 MEL 遍历 Map

【讨论】:

    【解决方案3】:

    JsonPath 表达式现在已经被贬值了,你甚至不会得到足够的文档来做..
    所以,目前你需要使用:-&lt;json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object" /&gt;
    &lt;json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object" /&gt;
    甚至 &lt;json:json-to-object-transformer returnClass="java.util.List" doc:name="JSON to Object" /&gt; 根据 JSON 数据从 JSON 中提取数据

    【讨论】:

      猜你喜欢
      • 2014-06-29
      • 1970-01-01
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 2010-09-20
      • 1970-01-01
      相关资源
      最近更新 更多