json JOLT规范根据上述要求修整payload.parameters.name

vwoqyblh  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(90)

对于下面的输入JSON

{
  "payload": {
    "version": "1",
    "parameters": [
      {
        "name": "a.b.c.d e.=f+g-h.i.j.1_2.dist [km]",
        "value": 0,
        "quality": false,
        "timestamp": 1688997493042
      },
      {
        "name": "a.b.c.d e.=f+g-h.i.j.1_2.time [sec]",
        "value": 0,
        "quality": false,
        "timestamp": 1688997493059
      }
    ],
    "eventType": "EVENT",
    "eventTime": 1690452924457
  }
}

字符串
我想有一个输出JSON,我可以修剪payload.parameters.name例如有这样的东西

{
  "payload": {
    "version": "1",
    "parameters": [
      {
        "name": "1_2.dist [km]",
        "value": 0,
        "quality": false,
        "timestamp": 1688997493042
      },
      {
        "name": "1_2.time [sec]",
        "value": 0,
        "quality": false,
        "timestamp": 1688997493059
      }
    ],
    "eventType": "EVENT",
    "eventTime": 1690452924457
  }
}


我尝试了几种方法,但无法转换成所需的格式
我试着按照规格

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "$": "payload",
      "parameters": {
        "*": {
          "name": {
            "#trimLast": {
              "input": "payload.parameters[&3].name",
              "separator": "."
            }
          }
        }
      }
    }
  }
]


但它没有获取我所需的输出
请注意:**a.b.c.d e.=f+g-h.i.j.**部分对于param list中的所有对象都是通用的,我的目标是从名称中删除该部分。

mdfafbf1

mdfafbf11#

您可以通过文字**i.j.i\\.j\\.沿着转义字符)进行分割**,然后在modify转换中从新形成的数组中提取lastElement,如

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "payload": {
        "parameters": {
          "*": {
            "n0": "=split('i\\.j\\.',@(1,name))",
            "name": "=lastElement(@(1,n0))"
          }
        }
      }
    }
  },
  { // get rid of the extra element "n0"
    "operation": "remove",
    "spec": {
      "payload": {
        "parameters": {
          "*": {
            "n0": ""
          }
        }
      }
    }
  }
]

字符串
网站http://jolt-demo.appspot.com/上的 * 演示 * 是:


的数据

相关问题