ВСТРЯХНИТЕ, чтобы соединить различные свойства

#jolt

Вопрос:

Исходный код JSON:

 [
  {
    "metrics": {
      "cost_per_app_install": "0.08",
    },
    "dimensions": {
      "stat_time_day": "2021-06-04 00:00:00",
      "campaign_id": 170011516
    }
  },
  {
    "metrics": {
      "cost_per_app_install": "12.3",
    },
    "dimensions": {
      "stat_time_day": "2021-06-04 00:00:00",
      "campaign_id": 17013
    }
  }
]
 

Ожидаемый:

 [
  {
    "cost_per_app_install": "0.08",
    "stat_time_day": "2021-06-04 00:00:00",
    "campaign_id": 170011516
  },
  {
    "cost_per_app_install": "12.3",
    "stat_time_day": "2021-06-04 00:00:00",
    "campaign_id": 17013
  }
]
 

Спецификация ВСТРЯСКИ:

 [
  {
    "operation": "shift",
    "spec": {
      "*": {
        "metrics": "[amp;1]",
        "dimensions": "[amp;1]"
      }
    }
  }
]
 

Я хочу добавить данные dimensions и metrics свойства как одну объединенную запись. Но не смог с моей конфигурацией JOLT. Эта конфигурация просто удаляет metrics и dimensions имена. Могу ли я сделать это только с shift помощью операции?

Ответ №1:

Вам нужен еще один шаг для перемещения по индексам, таким как

 [
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": { "*": "[amp;2].amp;" }
      }
    }
  }
]
 

Кстати, нет необходимости явно перечислять пары ключ-значение для текущего случая, просто "*": "[amp;1]" следует отдавать предпочтение, а не "metrics": "[amp;1]","dimensions": "[amp;1]" для текущих пар, если бы это было так.