JOLT Spec для поддержки ввода JSON - PullRequest
1 голос
/ 21 мая 2019

Мой входной JSON выглядит следующим образом, но я не уверен, как выполнить преобразование параметров, связанных с внутренним массивом, используя JOLT.Любая помощь приветствуется, так как я новичок в JOLT

{
  "pktId": 7603,
  "seq": 1,
  "vehicleNumber": "66079",
  "rmdLocation": "1",
  "rmdTime": "2019-01-07T11:27:05.745Z",
  "position": {
    "lat": 55.4911232,
    "lng": -3.686831
  },
  "dataSource": 11,
  "frames": [
    {
      "seq": 0,
      "card": 8,
      "channel": 6,
      "value": 117
    },
    {
      "seq": 1,
      "card": 8,
      "channel": 6,
      "value": 120
    }
  ]
}

Ниже приведен файл спецификации, который я создал, но он не завершен

[
  {
    "operation": "shift",
    "spec": {
      "frames": {
        "*": {
          "seq": "parameters[&1].seq",
          "card": "parameters[&1].card",
          "channel": "parameters[&1].channel",
          "value": "parameters[&1].value"
        }
      },
      "rmdTime": "messageTime",
      "vehicleNumber": "roadNumber"
    }
  },
  {
    "operation": "default",
    "spec": {
      "appId": "configMsgXX",
      "customerId": "ABC",
      "messageRev": 1,
      "messageType": "customStatistics"
    }
  }
]

Ожидаемый результат - ниже

{
  "appId": "configMsgXX",
  "customerId": "ABC",
  "deviceId": string1+roadNumber+string2",
  "messageRev": 1,
  "messageTime": 1543395341000,
  "messageType": "customStatistics",
  "parameters": [
    {
      "address": string1+string2,
      "name": "EM2000VoltageMainGenerator",
      "timestamp": 1543395341000,
      "quality": "3",
      "datatype": "INTEGER",
      "value": 100,
      "qualityReason": "Stale Data",
      "category": "REAL"
    }
  ],
  "roadNumber": 66079
}

Я использую эту библиотеку https://github.com/bazaarvoice/jolt

1 Ответ

0 голосов
/ 22 мая 2019
[
  {
    "operation": "shift",
    "spec": {
      "frames": {
        "*": {
          "seq": "parameters[&1].seq",
          "card": "parameters[&1].card",
          "channel": "parameters[&1].channel",
          "value": "parameters[&1].value",
          "@(2,rmdTime)": "parameters[&1].timestamp"
        }
      },
      "rmdTime": "messageTime",
      "vehicleNumber": "roadNumber"
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "parameters": {
        "*": {
          "quality": "3",
          "name": "",
          "address": "",
          "datatype": "INTEGER",
          "qualityReason": "Stale Data",
          "category": "REAL"
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "appId": "configMsgXX",
      "customerId": "ABC",
      "messageRev": 1,
      "messageType": "customStatistics"
    }
  }
]
...