【发布时间】:2022-01-20 14:15:49
【问题描述】:
JSON 文件如下所示:
{
"name": "My Collection",
"description": "This is a great collection.",
"date": 1639717379161,
"attributes": [
{
"trait_type": "Background",
"value": "Sand"
},
{
"trait_type": "Skin",
"value": "Dark Brown"
},
{
"trait_type": "Mouth",
"value": "Smile Basic"
},
{
"trait_type": "Eyes",
"value": "Confused"
}
]
}
我发现 a shell script 使用 jq 并且有这个代码:
i=1
for eachFile in *.json; do
cat $i.json | jq -r '.[] | {column1: .name, column2: .description} | [.[] | tostring] | @csv' > extract-$i.csv
echo "converted $i of many json files..."
((i=i+1))
done
但它的输出是:
jq: error (at <stdin>:34): Cannot index string with string "name"
converted 1 of many json files...
对我如何使这项工作有任何建议?谢谢!
【问题讨论】:
-
您根本没有使
jq过滤器适应您的实际 JSON。 -
@chepner 我将其更新为使用
name和description字段。你可以说得更详细点吗?我不明白jq。 -
您需要编写一个
jq命令,将给定的 JSON 文件转换为 CSV。问题不是你的 shell 脚本,而是 jq 的调用。 -
@AndyLester 没错,那么我该如何编写这个命令呢?这就是为什么我要问 Stack Overflow ;)
-
我们不知道您想要什么样的转换,但那里有很多很好的
jq教程。