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

时间:2020-01-24 13:38:17

标签: json jolt

我在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 个答案:

答案 0 :(得分:1)

这是经典的移位操作。您将需要遍历付款数组的itens,并将每个属性“移”回同一索引(&1)上的对象:

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

答案 1 :(得分:0)

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