Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json jq错误“;对象在csv行中无效;_Json_Bash_Csv_Jq - Fatal编程技术网

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:这很有效!如果你想把它作为一个答案,以及为什么另一种方法失败了,我很乐意接受,谢谢。