当前位置: 首页 > 知识库问答 >
问题:

支持输入json的JOLT规范

张嘉佑
2023-03-14

我的输入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个答案

邵兴文
2023-03-14
[
  {
    "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"
    }
  }
]
 类似资料:
  • 我很难为不同的JSON输入编写jolt规范。我需要一个通用的jolt规范,这样我就可以得到一个扁平的json。 输入 1 : 我们有一个材料运动数组 输入2:我们没有物质运动数组 我已经为输入1使用了joltspec,它工作正常,我需要它也为输入2工作

  • 我很难为不同的JSON输入编写一个jolt规范。我需要得到一个通用的jolt规范,以便得到一个扁平的json 输入1: 输入2: 需要JSON输出- 单个平展 JSON : 我尝试的Jolt规范适用于输入2,但不适用于输入1: 请帮助我很难为不同的 JSON 输入编写颠簸规范。我需要获得一个通用的颠簸规范,以便我得到一个扁平化的 json

  • 我正在努力使用 JOLT 转换复杂的 json。 输入JSON: 预期输出: 我无法理解如何在基于“字段名称”的输出中访问和分配“字段值”。请帮我做一下震动测试。 注意:输入JSON中的名称、标题和公司的顺序将是混乱和随机的,这意味着在“data”数组下,第一个对象仅与“Name”相关不是强制性的。

  • 我有以下输入json: 输出JSON应如下所示: 任何人都可以就如何为上述内容构建适当的 Bump 规范提供任何指导吗? 非常感谢您的帮助 ^_^

  • 我正在尝试用以下规格进行JOLT换班操作,这是不起作用的。不知道我犯了什么错误。在这种情况下需要帮助。输出JSON作为一个对象来代替Array,shift也不能按预期工作。

  • 我对震动是新手。我有两个不同的相同结构的输入json集,除了一个对象内部不同的基于decider值,如下所示。