【发布时间】:2018-11-05 10:05:39
【问题描述】:
像这样给出一个 JSON 字符串,
[
{
"id": 1,
"name": "Arthur",
"age": "21"
},
{
"id": 2,
"name": "Richard",
"age": "32"
}
]
如何按姓名过滤并获取年龄?
例如,给定名称为"Richard",让jq 返回"32"。谢谢。
【问题讨论】:
像这样给出一个 JSON 字符串,
[
{
"id": 1,
"name": "Arthur",
"age": "21"
},
{
"id": 2,
"name": "Richard",
"age": "32"
}
]
如何按姓名过滤并获取年龄?
例如,给定名称为"Richard",让jq 返回"32"。谢谢。
【问题讨论】:
$ jq --arg name Richard '.[] | select(.name==$name) | .age' input.json
"32"
在 Windows 中像这样使用 jq 时,引用必须适合 Windows。
【讨论】:
jq '.[] | select(.name) | test("Richard"))',为什么它不起作用?我得到jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end
")?我实际上想要32,但我总是在任何回报中得到报价。因此,我在 OP 中要求"32",以使其更容易。