【问题标题】:JoltTransformJSON processor in NiFi(json without any parent tag)NiFi中的JoltTransformJSON处理器(没有任何父标签的json)
【发布时间】:2017-04-18 07:46:48
【问题描述】:

我需要使用 Nifi 中的 JoltTransformJSON 转换 JSON 数据,这是我用于转换的规范:

[{
"operation": "shift",
"spec": {
    "*": {
        "Header": {
            "readOn": "created_date_time",
            "fileName": "readFile"
        },
        "Data": {
            "id": "Id",
            "first_name": "First_Name",
            "last_name": "Last_Name",
        }
    }
}}]

我的输入数据:

[{
"Header": {
    "readOn": "2017/04/18 10:55:05",
    "fileName": "sample1.csv",
    "recordNum": 1
},
"Data": {
    "last_name": "Martin",
    "id": 21,
    "first_name": "Clarence"
}
}, {
"Header": {
    "readOn": "2017/04/18 10:55:05",
    "fileName": "sample.csv",
    "recordNum": 2
},
"Data": {
    "last_name": "Graham",
    "id": 22,
    "first_name": "Walter"
}
}]

输出我得到的:

{
"created_date_time": ["2017/04/18 10:55:05", "2017/04/18 10:55:05"],
"readFile": ["sample1.csv", "sample2.csv"],
"Id": [21, 22],
"First_Name": ["Clarence", "Walter"],
"Last_Name": ["Martin", "Graham"]
}

所需的输出:

[{
"recordNum": 1,
"Header": {
    "created_date_time": "2017/04/18 10:55:05",
    "readFile": "getusroi.csv"
},
"Data": {
    "Last_Name": "Martin",
    "Id": 21,
    "First_Name": "Clarence"
}
}, {
"recordNum": 2,
"Header": {
    "created_date_time": "2017/04/18 10:55:05",
    "readFile": "getusroi.csv"
},
"Data": {
    "Last_Name": "Graham",
    "Id": 22,
    "First_Name": "Walter"
}
}]

问题:谁能指导我在哪里改变我的颠簸规范以实现所需的转换输出。

【问题讨论】:

    标签: apache-nifi jolt


    【解决方案1】:

    诀窍是沿着树往回走,直到到达数组中的元素,然后您可以在目标中引用该索引。试试这个规范:

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "Header": {
              "recordNum": "[&2].recordNum",
              "readOn": "[&2].&1.created_date_time",
              "fileName": "[&2].&1.readFile"
            },
            "Data": {
              "id": "[&2].&1.Id",
              "first_name": "[&2].&1.First_Name",
              "last_name": "[&2].&1.Last_Name"
            }
          }
        }
      }
    ]
    

    【讨论】:

    • 感谢@mattyb ..只是一个小查询,说如果想将所有数据(标题+数据)放在一个新键中,而输入中没有,我需要加入一个新规范对于链中的那个..e.g. - "记录":{"readOn": ''", "fileName": ""....等}
    • 如果想把Header和Data中的字段合并成一个叫做Record的字段,可以把&1换成Record
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多