使用Jolt展平包含array的对象数组

时间:2019-07-19 20:14:47

标签: arrays json jolt

Jolt是否可以展平包含数组的对象数组?例如,是否可以为以下输入和输出编写Jolt转换规范?

震动https://github.com/bazaarvoice/jolt

输入:

[
  {"Id": "111", ["mobile": "1111", "home": "1112"]},
  {"Id": "222", ["mobile": "2221"]}
]

输出:

[
  {"Id": "111", "mobile": "1111"},
  {"Id": "111", "home": "1112"},
  {"Id": "222", "mobile": "2221"}
]

我找不到表示输出数组索引的方法。

1 个答案:

答案 0 :(得分:0)

假设输入固定为

[
  {
    "Id": "111",
    "Val": [
      {
        "mobile": "1111"
      },
      {
        "home": "1112"
      }
    ]
  },
  {
    "Id": "222",
    "Val": [
      {
        "mobile": "2221"
      }
    ]
  }
]

然后应用以下转换

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Id": null,
        "Val": {
          "*": {
            "@": "[&3].[&0]",
            "@(2,Id)": "[&3].[&0].id"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "[]"
      }
    }
  }
]

达到预期的输出:

[ {
  "mobile" : "1111",
  "id" : "111"
}, {
  "home" : "1112",
  "id" : "111"
}, {
  "mobile" : "2221",
  "id" : "222"
} ]