如何解决是否可以使用 NIFI 中的 Jolt 规范从单个 JSON 创建多个 JSON 对象
我有一个输入 JSON:
{
"flu": "flu1","reportId": 11,"Name":"Transform"
}
预期输出:
{
"flu": "flu1","Name":"Transform","fullname":"flu1-11-Transform"
}
{
"type":"relationship","id":"flu1-11-Transform"
}
规格:
[{
"operation":"modify-default-beta","spec":{
"fullname": "=concat(@(1,flu),'-',@(1,reportId),Name))"
}
}]
上述规范适用于第一个 JSON 对象。是否可以创建两个 JSON 对象,如预期输出中所示?
解决方法
您只能使用 JOLT 输出一个顶级对象,但该对象可以是一个数组(您所需的输出不是有效的 JSON 原样)。如果你想要一个包含这些对象的二元素数组,你可以使用以下规范:
[{
"operation": "modify-default-beta","spec": {
"fullname": "=concat(@(1,flu),'-',@(1,reportId),Name))"
}
},{
"operation": "shift","spec": {
"*": "[0].&","@(1,fullname)": "[1].id","#relationship": "[1].type"
}
}]
如果您需要用空格分隔的两个 JSON 对象,因为您在此问题中标记了 Apache NiFi,您可以将 JoltTransformRecord 与 JsonRecordSetWriter 一起使用,该 JsonRecordSetWriter 的 Output Grouping
属性设置为 One Line Per Object
。格式不会与上面完全相同(每个对象都在一行上),但它将是由空格分隔的两个 JSON 对象(某些系统接受/期望这种格式)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。