如何用MLR将JSON转CSV时补全缺失字段为null?
用Miller(mlr)将多对象JSON转换为带统一表头且缺失字段填充null的CSV
解决这个问题的核心是让Miller先识别所有JSON对象中出现的字段,再对缺失字段填充指定值,最后输出统一表头的CSV。
执行命令
./mlr --j2c fill-missing --value "null" test.json
命令说明
--j2c: shorthand参数,等价于--json --csv,指定输入为JSON格式、输出为CSV格式fill-missing:Miller内置操作,会自动收集所有输入JSON对象的字段集合,对每个对象中缺失的字段填充指定值--value "null":指定缺失字段的填充内容为字符串null,若需空值可替换为--value ""
输出结果
执行后将得到你期望的统一表头CSV:
queue,field1,field2,unique_field A,22,2,0 B,39,3,null C,336,5,null
原命令问题说明
原命令./mlr --j2c cat test.json中,cat操作仅做格式转换,不会处理字段不一致的情况。当Miller遇到字段集合不同的JSON对象时,会重复输出新的表头,导致结果不符合预期。
内容的提问来源于stack exchange,提问作者pankajsaha
相关产品推荐
相关产品推荐

