首页 > 解决方案 > Nifi - 将根 json 元素拆分为不同的流文件

问题描述

我有一个数据源正在发送包含各种键值对的 json 格式的消息。每条消息中包含哪些键并不一致。但是,我需要将每个单独的键值对拆分到自己的流文件中,并能够提取键名

这样做的原因是,我需要使用键名执行表查找,以生成新的数据格式,包括值

例如,如果我收到这样的消息:

{
  "key1": 123,
  "Key2": 4234,
  "Key3": 789  
}

我希望输出是三个单独的流文件

{
  "key1": 123
}

{
  "Key2": 4234
}

{
  "Key3": 789 
}

我还需要根据这些单独的流文件知道如何提取密钥的名称

标签: jsonsplitapache-nifi

解决方案


正确的,

你需要一个 jolttransformer 来做这个

您的流程将如下所示: 在此处输入图像描述

我的颠簸设置它的地方: 在此处输入图像描述

颠簸规格:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "$": "[#2].Key",
        "@": "[#2].Value"
      }
    }
  }
]

N

**接下来,您将输出拆分为$。*。

并使用 EvaluateJson 评估,然后您可以随意使用 Lookup 中的属性。

这将是 Jolt Trans 的输出:

[ {
  "Key" : "key1",
  "Value" : 123
}, {
  "Key" : "Key2",
  "Value" : 4234
}, {
  "Key" : "Key3",
  "Value" : 789
} ]

推荐阅读