使用Miller将CSV转JSON时如何清理空字段?
解决方案
完全可以用Miller实现这两个需求,而且不需要拆分两次命令,一次就能完成所有操作。核心是利用Miller的filter和map函数针对性处理空值:
完整命令
mlr --icsv --ojson --jflatsep '/' --jlistwrap \ remove-empty-columns \ then filter -x Properties '$value != ""' \ then map 'if ($value == "") { return null } else { return $value }' \ file.csv > file.json
各步骤作用
remove-empty-columns:先清理掉CSV中完全为空的列,和你之前的操作一致;filter -x Properties '$value != ""':-x Properties指定只对合并后的Properties数组进行过滤;- 直接移除数组中所有空字符串元素,只保留有效属性值;
map 'if ($value == "") { return null } else { return $value }':- 遍历除
Properties外的所有字段,把空字符串替换为JSON规范的null值;
- 遍历除
- 全程保留
--jflatsep '/'和--jlistwrap参数,确保Properties/X列正常合并为数组。
效果验证
执行这条命令后,输出的JSON会完全匹配你的期望:
Properties数组里的空字符串被全部移除;- 像
Type这类字段的空值会被替换成null; - 其他非空字段保持原样,同时原CSV文件不会被修改(无需
-I参数)。
内容的提问来源于stack exchange,提问作者Aldoro
相关产品推荐
相关产品推荐

