JOLT Spec从一组相似名称的键构建阵列

时间:2019-10-24 18:58:16

标签: json jolt

尝试构建JOLT规范以将名称相似的键放入数组中,并去除前6个字符。在下面的示例中,所有以“ fd1lk1”开头的密钥都将进入数组“ Link1”,以“ fd1lk2”开头的密钥将进入数组“ Link2”,依此类推。

感谢您的帮助!

源JSON:

{
  "EventName": "WidgetFeedImpression",
  "WidgetName": "_blah_2019.08.17",
  "WidgetID": "5d56ef313db7c300018d9c66",
  "WidgetVariationName": "_blah_2019.08.17",
  "WidgetVariationID": "5b5f524eb1932300014d0928",
  "WidgetTemplate": "blah-six-grid-wth-image",
  "fd1lk1Title": "link 1 title",
  "fd1lk1Image": "link 1 image",
  "fd1lk1TargetURL": "link 1 url",
  "fd1lk1Position": "1",
  "fd1lk1Id": "fd5da8ce0f8701a3000190efbdlk1",
  "fd1lk2Title": "link 2 title",
  "fd1lk2Image": "link 2 image",
  "fd1lk2TargetURL": "link 2 url",
  "fd1lk2Position": "2",
  "fd1lk2Id": "fd5da8ce0f8701a3000190efbdlk2",
  "gtmcb": "1878625665",
  "CreatedAtUtc": "2019-10-24T16:57:01.5274702Z"
}

所需的输出:

{
  "EventName": "WidgetFeedImpression",
  "WidgetName": "_blah_2019.08.17",
  "WidgetID": "5d56ef313db7c300018d9c66",
  "WidgetVariationName": "_blah_2019.08.17",
  "WidgetVariationID": "5b5f524eb1932300014d0928",
  "WidgetTemplate": "blah-six-grid-wth-image",
  "Link1" : [ {
    "Title" : "link 1 title",
    "Image" : "link 1 image",
    "TargetURL" : "link 1 url",
    "Position" : "1",
    "Id" : "fd5da8ce0f8701a3000190efbdlk1"
  } ],
  "Link2" : [ {
    "Title" : "link 2 title",
    "Image" : "link 2 image",
    "TargetURL" : "link 2 url",
    "Position" : "2",
    "Id" : "fd5da8ce0f8701a3000190efbdlk2"
  } ],
  "gtmcb": "1878625665",
  "CreatedAtUtc": "2019-10-24T16:57:01.5274702Z"
}

1 个答案:

答案 0 :(得分:0)

提取*中的fd1lk*Title并与&(0,1)一起使用:

[
  {
    "operation": "shift",
    "spec": {
      "fd1lk*Title": "Link&(0,1).[0].Title",
      "fd1lk*Image": "Link&(0,1).[0].Image",
      "fd1lk*TargetURL": "Link&(0,1).[0].TargetURL",
      "fd1lk*Position": "Link&(0,1).[0].Position",
      "fd1lk*Id": "Link&(0,1).[0].Id",
      "*": {
        "@": "&"
      }
    }
  }
]

有关基本概念,请参见here