使用Mule DataMapper将视图数据解压缩到JSON

时间:2013-07-02 15:58:22

标签: json mule datamapper

我有一个数据库视图,我需要以JSON格式发送到Web API调用,但是我很难弄清楚如何让数据映像器取消数据展平。我想要的格式是:

{
    "PersonId": "12345"
  , "CommonProp": "asdf"
  , "DataForPerson": [
        { "Prop1": "prop 1 value A", "Prop2": "prop 2 value A" }
      , { "Prop1": "prop 1 value B", "Prop2": "prop 2 value B" }
    ]
}

视图中的格式如下:

PersonId    CommonProp    Prop1             Prop2
12345       asdf          prop 1 value A    prop 2 value A
12345       asdf          prop 2 value B    prop 2 value B

我该怎么做呢?我最接近的是

{
    "PersonId": "12345"
  , "CommonProp": "asdf"
  , "DataForPerson": [
        { "Prop1": "prop 1 value A", "Prop2": "prop 2 value A" }
    ]
} {
    "PersonId": "12345"
  , "CommonProp": "asdf"
  , "DataForPerson": [
        { "Prop1": "prop 1 value B", "Prop2": "prop 2 value B" }
    ]
}

显然,这是不正确的。我曾尝试使用datamapper来做到这一点,但没有任何运气。

谢谢!

编辑 以下是该流程的图片:

Mule Flow

民意调查和JDBC是SELECT DISTINCT PERSON_ID FROM MY_VIEW。在每个人中,我希望每人进行一次JSON呼叫。我现在正在输出一个文件而不是调用Web API,虽然我确实尝试过Web API调用,只要它获得有效的JSON就可以正常工作。

1 个答案:

答案 0 :(得分:1)

我确实意识到您已经要求使用DataMapper解决方案。如果您需要备用解决方案,以下仅使用MEL:

<expression-component><![CDATA[
    payload =
      [
        'PersonId': payload[0].PersonId,
        'CommonProp': payload[0].CommonProp,
        'DataForPerson': (['Prop1': $.Prop1, 'Prop2': $.Prop2] in payload)
      ];
]]></expression-component>

<json:object-to-json-transformer />