首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法形成JOLT架构来转换NiFi中的JSON

无法形成JOLT架构来转换NiFi中的JSON
EN

Stack Overflow用户
提问于 2019-04-09 21:06:41
回答 1查看 115关注 0票数 0

我正在尝试使用Apache NiFi中的jolt JSON to JSON转换。我想把一种JSON转换成另一种格式。

这是我的原始JSON:

代码语言:javascript
复制
{
  "total_rows": 5884,
  "offset": 0,
  "rows": [
    {
      "id": "03888c0ab40c32451a018be6b409eba3",
      "key": "03888c0ab40c32451a018be6b409eba3",
      "value": {
        "rev": "1-d5cc089dd8682422962ccab4f24bd21b"
      },
      "doc": {
        "_id": "03888c0ab40c32451a018be6b409eba3",
        "_rev": "1-d5cc089dd8682422962ccab4f24bd21b",
        "topic": "iot-2/type/home-iot/id/1234/evt/temp/fmt/json",
        "payload": {
          "temperature": 36
        },
        "deviceId": "1234",
        "deviceType": "home-iot",
        "eventType": "temp",
        "format": "json"
      }
    },
    {
      "id": "03888c0ab40c32451a018be6b409f163",
      "key": "03888c0ab40c32451a018be6b409f163",
      "value": {
        "rev": "1-dee82cbb1b5ffa8a5e974135eb6340c5"
      },
      "doc": {
        "_id": "03888c0ab40c32451a018be6b409f163",
        "_rev": "1-dee82cbb1b5ffa8a5e974135eb6340c5",
        "topic": "iot-2/type/home-iot/id/1234/evt/temp/fmt/json",
        "payload": {
          "temperature": 22
        },
        "deviceId": "1234",
        "deviceType": "home-iot",
        "eventType": "temp",
        "format": "json"
      }
    }
  ]
}

我希望将其转换为以下JSON:

代码语言:javascript
复制
[
   {
      "temperature":36,
      "deviceId":"1234",
      "deviceType":"home-iot",
      "eventType":"temp"
   },
   {
      "temperature":22,
      "deviceId":"1234",
      "deviceType":"home-iot",
      "eventType":"temp"
   }
]

这是我的规范的样子:

代码语言:javascript
复制
[
  {
    "operation": "shift",
    "spec": {
      "rows": {
        "*": {
          "doc": {
            "deviceId": "[&1].deviceId",
            "deviceType": "[&1].deviceType",
            "eventType": "[&1].eventType",
            "payload": {
              "*": "[&1]"
            }
          }
        }
      }
    }
  }
]

我一直收到一个空响应。我是个新手,文档也不是很容易理解。有人能帮帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 21:34:29

因为您在数组索引之后“下”了一个级别,所以当您到达deviceId时,您距离索引已经有2个级别了。将除payload之外的所有&1替换为&2。在这种情况下,您是另一个级别的“下一级”,因此您将需要使用&3作为索引。您还需要获取与*匹配的任何内容(例如temperature)。并通过在数组索引后使用&将传出字段名设置为相同的值。下面是生成的规范:

代码语言:javascript
复制
[
  {
    "operation": "shift",
    "spec": {
      "rows": {
        "*": {
          "doc": {
            "deviceId": "[&2].deviceId",
            "deviceType": "[&2].deviceType",
            "eventType": "[&2].eventType",
            "payload": {
              "*": "[&3].&"
            }
          }
        }
      }
    }
  }
]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55593665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档