1

如果我有以下 JSON

[ 
  { "category": "reference",
    "author": "Nigel Rees",
    "title": "Sayings of the Century",
    "price": 8.95
  },
  { "category": "fiction",
    "author": "Evelyn Waugh",
    "title": "Sword of Honour",
    "price": 12.99
  },
  { "category": "fiction",
    "author": "Herman Melville",
    "title": "Moby Dick",
    "isbn": "0-553-21311-3",
    "price": 8.99
  },
  { "category": "fiction",
    "author": "J. R. R. Tolkien",
    "title": "The Lord of the Rings",
    "isbn": "0-395-19395-8",
    "price": 22.99
  }
]

我可以使用以下 JSONPath 获得“Moby Dick”的价格:

$..[?(@.title=='Moby Dick')].price

结果:

'0' => "8.99"

但是我如何在 Mule 中做到这一点..... json 表达式在 mule 3.2 流程中获得相同结果会是什么样子?

我不介意您的答案是否显示了如何以另一种方式进行操作,只要我在 mule 中得到相同的结果。

谁能帮我解决这个问题??

4

1 回答 1

3

使用 MEL 的方法是反序列化 JSON 有效负载并使用MVEL 过滤投影

<json:json-to-object-transformer returnClass="java.util.List" />
<expression-transformer 
    expression="#[($.price in message.payload if $.title == 'Moby Dick')[0]]" />

此表达式不考虑Moby Dick不存在的情况。您没有提到在这种情况下要做什么:如果您在找不到该书时指定所需的行为,我可以加强表达。

于 2012-12-14T17:39:58.600 回答