Отображение значения массива в JSON в JOLT - PullRequest
0 голосов
/ 25 сентября 2019

Это мой JSON-пример:

{
  "totalElements": 168,
  "columns": {
    "dimension": {
      "id": "variables/daterangehour",
      "type": "time"
    },
    "columnIds": [
      "1"
    ]
  },
  "rows": [
    {
      "itemId": "119050300",
      "value": "00:00 2019-06-03",
      "data": [
        120,
        10
      ]
    },
    {
      "itemId": "119050805",
      "value": "05:00 2019-06-08",
      "data": [
        98,
        12
      ]
    },
    {
      "itemId": "119050923",
      "value": "23:00 2019-06-09",
      "data": [
        172,
        8
      ]
    }
  ]
}

Это мой JOLT:

[{
    "operation": "shift",
    "spec": {
      "rows": {
        "*": {
          "value": "[&1].date",
          "data": {
            "*": "[&2].metric1"
          }
        }
      }
    }
}
]

То, что он выводит:

[ {
  "date" : "00:00 2019-06-03",
  "metric1" : [ 120, 10 ]
}, {
  "date" : "05:00 2019-06-08",
  "metric1" : [ 98, 12 ]
}, {
  "date" : "23:00 2019-06-09",
  "metric1" : [ 172, 8 ]
} ]

Однако, кто япопытка вывести это:

[ {
  "date" : "00:00 2019-06-03",
  "metric1" : 120
  "metric2" : 10
}, {
  "date" : "05:00 2019-06-08",
  "metric1" 98
  "metric2: 12
}, {
  "date" : "23:00 2019-06-09",
  "metric1" : 172
  "metric2" : 8
} ]

Как мне сопоставить определенные значения массива, а не вернуть весь лот?Похоже, что вокруг первого знака в строке metric1 выбирается первый элемент, но я не могу найти код, который это делает.

1 Ответ

1 голос
/ 26 сентября 2019

Когда вы используете подстановочный знак, как показано ниже, это означает, что каждый элемент массива data должен быть сопоставлен с ключом [&2].metric1, что делает поле metric1 массивом.

"data": {
    "*": "[&2].metric1"
}

Чтовам нужно сделать это сопоставить 1-й элемент (элемент с индексом 0) массива data с ключом metric1 и 2-й элемент (элемент с индексом 1) с ключом metric2 следующим образом.

[
{
    "operation": "shift",
    "spec": {
        "rows": {
            "*": {
                "value": "[&1].date",
                "data": {
                    "0": "[&2].metric1",
                    "1": "[&2].metric2"
                }
            }
        }
    }
}
]
...