使用通配符过滤 JSON 键

问题描述 投票:0回答:1

我是第一次使用 NiFi。 我已经掌握了基础知识,但我认为我犯了一个常见的错误,即以编程方式思考而不是明智地思考。

我得到以下 JSON:

{
   "ABC#01": 1.0,
   "ABC#02": 2.0,
   ...
   "ABC#nn": zz.z,
   "AQB#01": "abc",
   "BRB": 123,
   ...
   "TTT#01": 1234567,
   "TTT#02": 23456789,
   ...
   "TTT#nn": zzzzzzz
}

我需要将其转换为:

{
   "123456": {  <= Acquired from the value of TTT#01
      "ABC#01": 1.0 
   , {
   "23456789": {  <== value of TTT#02
      "ABC#02": 2.0
   }, { 
   ...
   }      
}

我还丢弃了所有不涉及的键/值。 IE:

"AQB#01": "abc", "BRB": 123,
条目数量未知。 我被告知唯一正确的是 ABC#nn = TTT#nn。 NN 可以是任何值,并且可以丢弃任意数量的其他值。

有什么建议吗?

json apache-nifi jolt
1个回答
0
投票

您可以使用以下转换:

[
  {
    "operation": "shift",
    "spec": {
      "TTT\\#*": { "$": "&(1,1).key" },
      "ABC\\#*": { "@": "&(1,1).value.&" }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": { "@value": "@key" }
    }
  }
]

网站上的 演示 https://jolt-demo.appspot.com/ 是:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.