0

我有一个数据库视图,需要以 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" }
    ]
}

显然,这是不正确的。我曾尝试使用数据映射器来执行此操作,但没有任何运气。

谢谢!

编辑这是流程的图片:

骡流

poll 和 JDBC 是一个SELECT DISTINCT PERSON_ID FROM MY_VIEW. 在 for each 中,我希望每人进行一次 JSON 调用。我现在正在输出到一个文件而不是调用 Web API,尽管我确实尝试了 Web API 调用,只要它获得有效的 JSON,它就可以正常工作。

4

1 回答 1

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 />
于 2013-07-02T19:19:39.700 回答