Jolt - 将值从一个数组复制到另一个数组并更改键

Jolt - copy values from one array to another and change keys

我对 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"
    }
  ]
}
[
  {
    "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].&"
          }
        }
      }
    }
  }
]

这是一个经典的移位操作。您将需要迭代支付数组的 itens(使用 *)并将每个属性“移动”回其在支付数组相同索引 (&1) 处的对象:

[
  {
    "operation": "shift",
    "spec": {
      "payments": {
        "*": {
          "value": "payments.[&1].amount",
          "desc": "payments.[&1].description",
          "issued": "payments.[&1].issueDate",
          "*": "payments.[&1].&"
        }
      }
    }
  }
]