如何在命令行转嵌套JSON为CSV?jq执行报错求助
jq转换嵌套JSON到CSV的错误修正
你的命令出现Cannot index array with string "fields"错误,是两个写法问题导致的:
- 管道优先级错误:
["表头"], .records[]会把表头数组和每个record对象分开传递到后续管道,当处理表头数组时,数组没有fields属性,直接触发报错。 - fields访问错误:
fields是单个对象而非数组,.fields[]会把对象拆成键值对数组,后续访问.facilityname等属性自然失效。
正确命令
jq -r '["naam", "tijd", "totaalAantalPlaatsen", "bezettePlaatsen", "bezetting"] as $headers | $headers, (.records[] | [.fields.facilityname, .fields.time, .fields.totalplaces, .fields.occupiedplaces, .fields.bezetting]) | @csv' data.json
逻辑说明
- 用变量
$headers存储表头,确保表头不会被后续遍历逻辑错误处理 - 先输出表头,再遍历
records数组的每个元素 - 从每个元素的
fields子对象中提取指定字段,组成数组后转为CSV格式
内容的提问来源于stack exchange,提问作者kml
相关产品推荐
相关产品推荐

