JQ 从查询获取编译错误响应



我想为像我这样的新手寻求对示例文件进行测试查询的指导。我在测试时遇到编译错误。请告知需要调整的内容。

JSON 文件 --> sample.json

{
"lambda": {
"apple": [
{
"type": "fruit",
"color": "red",
"shape": "round",
"cron": "0/10 * * * ? *"
}
],
"orange": [
{
"type": "fruit",
"color": "orange",
"shape": "round",
"cron": "0/15 * * * ? *"
}
],
"apple-cider": [
{
"type": "juice",
"color": "pink",
"shape": "none",
"cron": "0/30 * * * ? *"
}
]
}
}

我收到这个jq:当我尝试从苹果酒获取数据时,1 编译错误消息

# jq -r ".lambda."apple-cider"[].shape" test.json
jq: error: cider/0 is not defined at <top-level>, line 1:
.lambda.apple-cider[].shape
jq: 1 compile error

[此回复回答了最初发布的 Q。 在修改之前,输入是 JSON 对象流。

您看到多个输出的原因是您的输入是一个流,并且您的过滤器应用于流中的每个项目。

所以看起来你应该修改你的过滤器,例如

.apple.color // empty

关于键"苹果酒"——因为它有一个特殊字符("-"(,你不能使用缩写语法。 无论您拥有哪个版本的 jq,都可以使用非缩写形式:.["apple-cider"];您也可以使用以下表单:

."apple-cider"

它适用于此命令

jq -r '.lambda."apple-cider"[].type' test.json 

最新更新