json - 如何使用jolt将嵌套数据变成线性数据

标签 json apache-nifi jolt

如何使用 jolt 将这个嵌套数据转换为线性格式数据,如下所述。需要为所有嵌套数据创建单独的条目。每条记录应该有5个数据practice_loc,prac_num,topId,S1和S2。 需要为所有嵌套数据创建单独的条目。每条记录应该有5个数据practice_loc,prac_num,topId,S1和S2。 输入数据

[
 {
    "practice_loc": 120,
    "prac_num": 234,
    "topId": "t1",
    "subList": [
      {
        "S1": "A1",
        "S2": "B1"
      },
      {
        "S1": "A2"
      }
    ]
  },
 {
    "practice_loc": 334,
    "prac_num": 233,
    "topId": "plumcherry",
    "subList": [
      {
        "S1": "A3"
      }
    ]
  },
{
    "practice_loc": 987,
    "prac_num": 232,
    "topId": "artica",
    "subList": [
      {
        "S1": "A5",
        "S2": "B7"
      }
    ]
  },
{
    "practice_loc": 987,
    "prac_num": 232,
    "topId": "rose",
    "subList": [
      {
      }
    ]
  }
]

预期输出

[
{
    "practice_loc": 120,
    "prac_num": 234,
    "topId": "t1",
    "S1": "A1",
    "S2": "B1"
  },
  {
    "practice_loc": 120,
    "prac_num": 234,
    "topId": "t1",
    "S1": "A2",
    "S2":""
 },
{
    "practice_loc": 334,
    "prac_num": 233,
    "topId": "plumcherry",
    "S1": "A3",
    "S2":""    
},
{
    "practice_loc": 987,
    "prac_num": 232,
    "topId": "artica",
    "S1": "A5",
    "S2": "B7"
  },
{
"practice_loc": 987,
    "prac_num": 232,
    "topId": "rose",
     "S1": "",
    "S2":""
}
]

最佳答案

您可以将结果动态地呈现为

[
  { // group elements by upper level objects wrapper nodes
    "operation": "shift",
    "spec": {
      "*": {
        "subList": {
          "*": {
            "@2|@": "&3_&1"
          }
        }
      }
    }
  },
  { // get rid of the wrappers
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": "[#3].&"
        }
      }
    }
  },
  { // get rid of the extra generated array, namely "subList"
    "operation": "remove",
    "spec": {
      "*": {
        "subList": ""
      }
    }
  }
]

关于json - 如何使用jolt将嵌套数据变成线性数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76400398/

相关文章:

javascript - 在成功回调之外读取 ajax 调用结果

java - 如何使用 apache nifi 连接到远程 postgresql

android - JSON.parse 语法错误,但 JSONLint 说它是有效的

apache-nifi - 我可以使用 Apache Nifi 作为 ESB 或请求中介吗?

json - 使用 jolt 变换压平具有公共(public)列 JSON 的复杂嵌套

json - Nifi - 忽略(或删除)JSON 的第一个数字

json - JOLT JSON 将值从一对多转换为一对一

java - 如何在 JOLT 中执行 `@class`

javascript - $.getJSON 命中失败但返回文本

c# - 无法将类型为 'Newtonsoft.Json.Linq.JObject' 的对象转换为类型 'System.Runtime.Serialization.ISafeSerializationData'