Json jq错误“;对象在csv行中无效;
我正在使用Json jq错误“;对象在csv行中无效;,json,bash,csv,jq,Json,Bash,Csv,Jq,我正在使用jq将嵌套的.json文件转换为.csv,但是,当我在json中有一个特定的键,值时,似乎出现了一个问题。我使用的脚本来自,如果我从输入文件中删除一行,它就会工作 错误: jq: error (at example.json:0): object ({"favicon":...) is not valid in a csv row $ jq -er -f json2csv.jq example.json 错误消息不是很具有描述性,因为它提到的对象似乎不是罪魁祸首 json2csv.
jq
将嵌套的.json
文件转换为.csv
,但是,当我在json中有一个特定的键,值时,似乎出现了一个问题。我使用的脚本来自,如果我从输入文件中删除一行,它就会工作
错误:
jq: error (at example.json:0): object ({"favicon":...) is not valid in a csv row
$ jq -er -f json2csv.jq example.json
错误消息不是很具有描述性,因为它提到的对象似乎不是罪魁祸首
json2csv.jq
paths as $path
| {path: $path, value: getpath($path)}
| select(.value|type == "object" )
| select( [.value[]][0] | type != "object")
| .path + ([.value[]])
| @csv
example.json(通过以下方式验证):
从JSON中删除以下内容不会从jq
中引发错误:
, "url": "https://example.com/image.png?version=1"
调用:
jq: error (at example.json:0): object ({"favicon":...) is not valid in a csv row
$ jq -er -f json2csv.jq example.json
我无法真正更改
.json
文件,因为它需要有问题的行,所以我正在jq
中寻找解决方案@tsv
和@csv
都要求它们的输入是平面数组(即原子值数组)。有很多(无限多?)方法可以“展平”对象和数组,所以在不知道您所期望的情况下,我只能疯狂地猜测
如果您想随意猜测,请将.path+[.value[]]
替换为
.path + [.value[]|tostring]
至少,在生成易于阅读的结果时,这将始终有效(假设输入是有效的JSON)。请遵循指导原则,描述和/或显示预期的输出(最好两者都显示)。@peak:以上所有内容都是示例;输出并不重要,因为我可以根据需要进行调整。这个错误就是问题所在,我没有输出。@peak:这很有效!如果你想把它作为一个答案,以及为什么另一种方法失败了,我很乐意接受,谢谢。