使用QueryRecord/JoltTransformJson等处理器修改JSON后,对象顺序是否有保障?
JSON数组对象顺序在常用处理工具中的保持情况
核心问题:用QueryRecord、JoltTransformJson、Groovy脚本这类JSON修改工具时,原数组里的对象顺序能不能保住?
先看你给的原JSON:
[ { "id":1, "price":400 }, { "id":2, "price":500 }, { "id":3, "price":250 } ]
还有示例JOLT转换规则:
[ { "operation": "default", "spec": { "*": { "status": 0 } } } ]
分工具说明:
- JoltTransformJson:用
*遍历数组元素时,会严格按原顺序逐个处理,不会乱序。你担心的那种id3跑到最前面的情况不会发生,处理后还是id1、id2、id3的顺序,每个对象新增status:0字段。 - QueryRecord(NiFi处理器):默认会保留原数组的元素顺序,除非你特意配置了排序规则,否则不会改变元素先后顺序。
- Groovy脚本:完全由你编写的逻辑决定。如果只是循环遍历修改每个对象(比如用
each循环),数组顺序会完全保留;只有当你主动调用排序、打乱(如shuffle)之类的方法,才会改变顺序。
总结:只要没主动添加改变顺序的逻辑,这三类工具都会保持原JSON数组的对象顺序,不会出现你担心的乱序情况。
内容的提问来源于stack exchange,提问作者fujidaon
相关产品推荐
相关产品推荐

