首页 > 解决方案 > NiFi:JoltTransformJSON 规范

问题描述

我有以下 JSON:

{
  "results": [
    {
      "customerClient": {
        "resourceName": "customers/7876562723/customerClients/8506630423",
        "clientCustomer": "customers/8506630423",
        "hidden": false,
        "level": "1",
        "manager": false,
        "descriptiveName": "BMW",
        "id": "85061423"
      }
    },
    {
      "customerClient": {
        "resourceName": "customers/7876562723/customerClients/6736523142",
        "clientCustomer": "customers/6736523142",
        "hidden": false,
        "level": "1",
        "manager": true,
        "descriptiveName": "Mercedes",
        "id": "67363142"
      }
    }
}
  ],
  "fieldMask": "customerClient.clientCustomer,customerClient.hidden,customerClient.level,customerClient.descriptiveName,customerClient.id,customerClient.manager"
}

我想要的是:

  1. 删除fieldMask参数,所以我不需要结果作为数组。
  2. 删除resultscustomerCient。所以我的 JSON 应该是这样的:
{
   "resourceName": "customers/7876562723/customerClients/8506630423",
   "clientCustomer": "customers/8506630423",
   "hidden": false,
   "level": "1",
   "manager": false,
   "descriptiveName": "BMW",
   "id": "85061423"
},
{
   "resourceName": "customers/7876562723/customerClients/6736523142",
   "clientCustomer": "customers/6736523142",
   "hidden": false,
   "level": "1",
   "manager": true,
   "descriptiveName": "Mercedes",
   "id": "67363142"
}

要删除results我正在使用SplitJson的拆分值:$.results. 现在我坚持使用 JOLT 规范对其进行修改。我怎样才能只用 进行上述操作JoltTransformJSON

标签: apache-nifi

解决方案


首先 - 你的 json 是错误的,你有一个额外的 }。

不使用颠簸

1 - 生成数据

$.results.[*].customerClient2 - 使用as 属性评估jsonresults

3 - 替换文本为${results:replace(']',''):replace('[','')}

这会给你

{
    "resourceName": "customers/7876562723/customerClients/8506630423",
    "clientCustomer": "customers/8506630423",
    "hidden": false,
    "level": "1",
    "manager": false,
    "descriptiveName": "BMW",
    "id": "85061423"
},
{
    "resourceName": "customers/7876562723/customerClients/6736523142",
    "clientCustomer": "customers/6736523142",
    "hidden": false,
    "level": "1",
    "manager": true,
    "descriptiveName": "Mercedes",
    "id": "67363142"
}

推荐阅读