使用mule表达式指向JsonData Object中的元素

时间:2014-03-20 13:16:50

标签: json amazon-s3 mule mule-studio mule-el

我有一个JSON格式的入站有效载荷。我使用" JSON转换为Object"转换器,然后将数据传递给组件(作为JsonData对象。)然后,我的组件返回相同的JsonData对象并进行修改。我尝试将Amazon S3组件用作流程的下一步,并尝试将存储桶名称和其他值绑定到JsonData对象中可访问的元素。 以下是存储桶名称的表达式:

#[json: TopKey/BucketName]

根据经验,这适用于JSON。

然而,当我运行这个时,我得到的是:

消息:无法调用getObjectContent。消息有效内容的类型为:JsonData 代码:MULE_ERROR-29999

  1. 无法调用getObjectContent。消息有效内容的类型为:JsonData(org.mule.api.MessagingException) org.mule.module.s3.processors.GetObjectContentMessageProcessor:177(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html
  2. 有没有办法可以使用我的JsonData对象并从中提取信息,或者在将其传递给Amazon S3组件之前是否必须将其转换回其他内容?

    谢谢,

3 个答案:

答案 0 :(得分:1)

在尝试了一下我的表达之后,我发现我可以像在Java组件中那样访问元素:

#[payload.get("TopKey").get("BucketName").getTextValue()]

我有我的BucketName!

答案 1 :(得分:0)

从表达式中删除空格:#[json:TopKey/BucketName]

答案 2 :(得分:0)

您可以设置"返回班级" to" JSON to Object"中的java.util.Map处理器,然后您可以通过#[payload.TopKey.BucketName]

访问该值