Jolt - копировать значения из одного массива в другой и менять ключи - PullRequest
0 голосов
/ 24 января 2020

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

"amout" -> "value"
"desc" -> "description"
"issued" -> "issueDate"

Ввод:

{
  "payments": [
    {
      "value": "128.90",
      "title": "Opłata za kurs poprawkowy",
      "desc": "Opłata za kurs poprawkowy z przedmiotu Architektura Komputerów. Prowadzący Janusz Kowalski.",
      "instalment": "1",
      "paymentDate": "2020-01-20",
      "issued": "2020-01-20",
      "status": "1"
    },
    {
      "value": "128.90",
      "title": "Opłata za kurs poprawkowy",
      "desc": "Opłata za kurs poprawkowy z przedmiotu Architektura Komputerów. Prowadzący Janusz Kowalski.",
      "instalment": "2",
      "paymentDate": "2020-02-20",
      "issued": "2020-02-20",
      "status": "2"
    }
  ]
}

Выход

{
  "payments": [
    {
      "amount": "128.90",
      "title": "Opłata za kurs poprawkowy",
      "description": "Opłata za kurs poprawkowy z przedmiotu Architektura Komputerów. Prowadzący Janusz Kowalski.",
      "instalment": "1",
      "paymentDate": "2020-01-20",
      "issueDate": "2020-01-20",
      "status": "1"
    },
    {
      "amount": "128.90",
      "title": "Opłata za kurs poprawkowy",
      "description": "Opłata za kurs poprawkowy z przedmiotu Architektura Komputerów. Prowadzący Janusz Kowalski.",
      "instalment": "2",
      "paymentDate": "2020-02-20",
      "issueDate": "2020-02-20",
      "status": "2"
    }
  ]
}

Ответы [ 2 ]

1 голос
/ 24 января 2020

Это классическая операция сдвига. Вам нужно будет перебрать массив итенов платежей и «переместить» каждый атрибут обратно в его объект с тем же индексом (& 1):

[
  {
    "operation": "shift",
    "spec": {
      "payments": {
        "*": {
          "value": "payments.[&1].amount",
          "desc": "payments.[&1].description",
          "issued": "payments.[&1].issueDate",
          "*": "payments.[&1].&"
        }
      }
    }
  }
]
0 голосов
/ 24 января 2020
[
  {
    "operation": "shift",
    "spec": {
      "payments": {
        // for each item in array
        "*": {
          // change keys
          "value": "payments[&1].amount",
          "desc": "payments[&1].description",
          "issued": "payments[&1].issueDate",
          // copy everything else
          "*": {
            "@": "payments[&2].&"
          }
        }
      }
    }
  }
]
...