我在Nifi中使用JOLTTransformJson处理器。 我的 Json 输入格式有以下 4 种:
[
{
"a": "1"
}
]
或
[
{
"a": "1",
"b": "2"
}
]
或
[
{
"a": "1"
},
{
"a": "3"
}
]
或
[
{
"a": "1",
"b": "2"
},
{
"a": "3",
"b": "4"
}
]
JSON格式显示为这4种类型,遵循以下规则:
我尝试使用 JSON 规范转换所有格式的 JSON 数组, 我的 JSON 规范是:
[
{
"operation": "shift",
"spec": {
"*": {
"*": {
"$": "[#2].fieldName",
"@": "[#2].fieldValue"
}
}
}
}
]
我想将 JSON 数组转换为如下形式:
[
{
"fieldName": "a",
"fieldValue": "1"
}
]
或
[
{
"fieldName": "a",
"fieldValue": "1"
},
{
"fieldName": "b",
"fieldValue": "2"
}
]
或
[
[
{
"fieldName": "a",
"fieldValue": "1"
}
],
[
{
"fieldName": "a",
"fieldValue": "3"
}
]
]
或
[
[
{
"fieldName": "a",
"fieldValue": "1"
},
{
"fieldName": "b",
"fieldValue": "2"
}
],
[
{
"fieldName": "a",
"fieldValue": "3"
},
{
"fieldName": "b",
"fieldValue": "4"
}
]
]
但是 JSON 规范无法处理所有情况,尤其是更多对象或更多属性,有一个错误的输出,简单如下:
[
{
"fieldName": [
"a",
"a"
],
"fieldValue": [
"1",
"3"
]
},
{
"fieldName": [
"b",
"b"
],
"fieldValue": [
"2",
"4"
]
}
]
我正在使用调试工具
请帮助修复 JSON 规范,非常感谢!
您可以从未包含在方括号内的限定符开始,例如
&2.&1...
[
{
"operation": "shift",
"spec": {
"*": {
"*": {
"$": "&2.&1.fieldName",
"@": "&2.&1.fieldValue"
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "[#1]"
}
}
}
]
这将处理所有四种情况。