Как преобразовать Json в Json, используя спецификацию Jolt? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть JSON полезная нагрузка вот так;

   [ {
      "Samples" : {
        "Load" : [ {
          "dataItemId" : "a5",
          "timestamp" : "2019-02-17T04:58:44.097Z",
          "name" : "Aload",
          "sequence" : "19",
          "subType" : null,
          "content" : null
        }, {
          "dataItemId" : "a7",
          "timestamp" : "2019-02-17T04:58:44.097Z",
          "name" : "AAA",
          "sequence" : "19",
          "subType" : null,
          "content" : null
        } ],
        "Angle" : [ {
          "dataItemId" : "a6",
          "timestamp" : "2019-02-17T04:58:44.097Z",
          "name" : "Aact",
          "sequence" : "20",
          "subType" : "ACTUAL",
          "content" : null
        } ]
      }
    } ]

Я хочу получить JSON вот так;

{
      "Samples" : [
            {
              "tag_name": "Load",
              "dataItemId" : "a5",
              "timestamp" : "2019-02-17T04:58:44.097Z",
              "name" : "Aload",
              "sequence" : "19",
              "subType" : null,
              "content" : null
            }, {
              "tag_name": "Load",
              "dataItemId" : "a7",
              "timestamp" : "2019-02-17T04:58:44.097Z",
              "name" : "AAA",
              "sequence" : "19",
              "subType" : null,
              "content" : null
            }, {
              "tag_name": "Angle",
              "dataItemId" : "a6",
              "timestamp" : "2019-02-17T04:58:44.097Z",
              "name" : "Aact",
              "sequence" : "20",
              "subType" : "ACTUAL",
              "content" : null
            }
      ]
}

В моем сценарии я должен преобразовать все данные jsonопределено выше.Я получаю 500 данных JSON в секунду .Как я могу сделать это, используя Jolt Specification?Толчок Спецификация быстро ?Это подходит для потоковой передачи?Или я должен написать свой собственный скрипт для этого?

1 Ответ

0 голосов
/ 25 февраля 2019

Эта спецификация работает, если ваша полезная нагрузка представляет собой массив с одним объектом:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Samples": {
          "*": {
            "*": {
              "$1": "Samples.&2[#2].tag_name",
              "*": "Samples.&2[#2].&"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "Samples": {
        "*": {
          "*": "Samples[]"
        }
      }
    }
  }
]

В противном случае вам может потребоваться разделить массив, выполнить преобразование для каждого элемента, а затем использовать MergeContent или MergeRecord, чтобы получить ихВернуться вместе.В качестве альтернативы вы можете использовать JoltTransformRecord, который применяет спецификацию к каждому элементу / записи в массиве, спецификацию просто нужно изменить, чтобы удалить начальный раздел * в первой операции shift.

...