背景:
我想从稍微更改JSON
{
"d0" : 0.0,
"d1" : 0.0,
"d2" : 0.0,
"d3" : 0.0,
"d4" : 0.0,
"d5" : 0.0,
"d6" : 0.0,
"d7" : 0.0
}
到
{ "d0" : [0.0],
"d1" : [0.0],
"d2" : [0.0],
"d3" : [0.0]
"d4" : [0.0],
"d5" : [0.0],
"d6" : [0.0],
"d7" : [0.0]
}
的回答
因此,我使用-
1.EvaluateJsonPath 2.UpdateAttribute 3.AttributesToJson
我的Nifi处理部分看起来像这样
我对3个处理器的设置是-
1.EvaluateJsonPath
settings/ configuration for EvaluateJsonPath
2.UpdateAttribute
settings/ configuration for UpdateAttribute
3.AttributesToJson
settings/ configuration for AttributesToJson
但是AttributesToJson只是将平面JSON中的数据顺序更改为
{
"d4" : [0.0],
"d5" : [0.0],
"d6" : [0.0],
"d7" : [0.0],
"d0" : [0.0],
"d1" : [0.0],
"d2" : [0.0],
"d3" : [0.0]
}
问题:
为什么AttributesToJson会这样?我应该如何将其更改为从d0到d7的正确顺序? 我需要正确的顺序,因为这应该是POST请求的正文。
答案 0 :(得分:0)
使用JoltTransformJson
处理器以所需顺序获取json列,并保留以下内容
spec:
[{
"operation": "shift",
"spec": {
"d1": "d1",
"d2": "d2",
"d3": "d3",
"d4": "d4",
"d5": "d5",
"d6": "d6",
"d7": "d7"
}
}
]
现在输出流文件将按照您期望的正确顺序显示:
{
"d1" : [ 0 ],
"d2" : [ 0 ],
"d3" : [ 0 ],
"d4" : [ 0 ],
"d5" : [ 0 ],
"d6" : [ 0 ],
"d7" : [ 0 ]
}
(或)
另一种方法是使用 Query Record processor
配置记录读取器/写入器,并以正确的顺序添加带有列名的新SQL查询。