JOLT Spec для построения массивов из группы ключей с одинаковыми именами - PullRequest
0 голосов
/ 24 октября 2019

Попытка создать 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 голосов
/ 31 октября 2019

* in 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",
      "*": {
        "@": "&"
      }
    }
  }
]

См. здесь для базовой концепции.

...