如何在Jolt转换中移除JSON数组内的null值?
解决Jolt转换后数组中null元素的移除问题
问题分析
当前Jolt转换后Ratings数组出现第一个null元素,原因是shift操作里的"*"匹配了ratings下的所有字段(包括primary),但primary被单独映射到primary1,没有为Ratings[0]生成有效键值对,因此留下空值。
解决方案
方案1:精准匹配字段,避免生成null
修改shift操作的匹配规则,只让需要放入Ratings的字段(quality和design)参与数组生成,直接跳过primary:
[ { "operation": "shift", "spec": { "ratings": { "primary": "primary1", "quality|design": { "$": "Ratings[#2].Name", "@": "Ratings[#2].Value" } } } } ]
方案2:添加remove操作清理null
保留原shift逻辑,新增remove操作删除数组中的null元素:
[ { "operation": "shift", "spec": { "ratings": { "primary": "primary1", "*": { "$": "Ratings[#2].Name", "@": "Ratings[#2].Value" } } } }, { "operation": "remove", "spec": { "Ratings": { "@null": "" } } } ]
转换结果
两种方案都能得到预期输出:
{ "primary1" : 5, "Ratings" : [ { "Name" : "quality", "Value" : 4 }, { "Name" : "design", "Value" : 5 } ] }
内容的提问来源于stack exchange,提问作者Raj P
相关产品推荐
相关产品推荐

