Преобразование толчка для массива - работает для одной записи, но не для массива - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь изменить большой JSON файл с более чем 10K записями. У меня есть такой вид ввода, и мне нужно сделать преобразование толчка для каждой записи:

  [
      {
        "id": 1031435,
        "event_id": "Formula_257",
        "formula_id": 257,
        "ts_start": 1583164200084000,
        "ts_end": 1583164484960000,
        "type": "formula",
        "details": {
          "6aa0734f-6d6a-4b95-8a2b-2dde346f9df7": {
            "PowerActiveTriPhase": 183836912
          }
        },
        "ack_ts": null,
        "ack_user": null
      },
      {
        "id": 1031435,
        "event_id": "Formula_257",
        "formula_id": 257,
        "ts_start": 1583164200084000,
        "ts_end": 1583164484960000,
        "type": "formula",
        "details": {
          "6aa0734f-6d6a-4b95-8a2b-2dde346f9df7": {
            "PowerActiveTriPhase": 183836912
          }
        },
        "ack_ts": null,
        "ack_user": null
      }
    ]

Этот вид spe c (благодаря @ Jagade sh) возвращает мне ноль:

[
  {
    "operation": "shift",
    "spec": {
      "id": "id",
      "event_id": "event_id",
      "formula_id": "formula_id",
      "ts_start": "ts_start",
      "ts_end": "ts_end",
      "type": "type",
      "details": {
        "*": {
          "$": "equipment_id",
          "*": {
            "$": "parameter",
            "@": "value"
          }
        }
      },
      "ack_ts": "ack_ts",
      "ack_user": "ack_user"
    }
  }
]

Что мне нужно сделать, чтобы это исправить?

Спасибо,

1 Ответ

1 голос
/ 28 апреля 2020

Упомянутое выше spe c работает для одного объекта, но здесь у нас есть Массив объекта, где нам нужно выполнить сдвиг, пройдя еще один уровень,

[
  {
    "operation": "shift",
    "spec": {
      "*": { //Traverse into the array
        "id": "[&1].id",
        "event_id": "[&1].event_id",
        "formula_id": "[&1].formula_id",
        "ts_start": "[&1].ts_start",
        "ts_end": "[&1].ts_end",
        "type": "[&1].type",
        "details": {
          "*": {
            "$": "[&3].equipment_id",
            "*": {
              "$": "[&4].parameter",
              "@": "[&4].value"
            }
          }
        },
        "ack_ts": "[&1].ack_ts",
        "ack_user": "[&1].ack_user"
      }
    }
  }
]
...