Преобразование массива Json с помощью Jolt - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь использовать Jolt для преобразования из массива JSON в другой.Он состоит из вложенного массива JSON без ключей.

Вот мой ввод:

[
  [
    "20190207101456",
    1,
    2,
    3
  ],
  [
    "20190207101456",
    4,
    5,
    6
  ]
]

И я хотел бы получить следующий вывод:

[
 {
  "timestamp": "20190207101456",
  "value1": 1,
  "value2" : 2,
  "value3" : 3
 },
 {
  "timestamp": "20190207101456",
  "value1": 4,
  "value2" : 5,
  "value3" : 6
 }
]

Мне удалось добавить ключи с этим файлом спецификации только для одного элемента вложенного массива:

[
  {
    "operation": "shift",
    "spec": {
      "0": "timestamp",
      "1": "value1",
      "2": "value2",
      "3": "value3"
    }
  }
]

Но я не знаю, как применить это для внешнего массива JSON.

1 Ответ

0 голосов
/ 07 февраля 2019

Что-то вроде этого должно делать то, что вы хотите:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "0": "[&1].timestamp",
        "1": "[&1].value1",
        "2": "[&1].value2",
        "3": "[&1].value3"
      }
    }
  }
]

После комментария к пустым массивам по умолчанию вы можете сделать это:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "0": "[&1].timestamp",
        "1": "[&1].value1",
        "2": "[&1].value2",
        "3": "[&1].value3"
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "*": {
        "TRASH": "",
        "value_before_timestamp": "static_value"
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "*": {
        "TRASH": ""
      }
    }
  }
]

TRASH трюк, взятый из здесь

...