如何使用 jq 从 JSON 中提取变量键及其值?

Mar*_*kus 2 json jq

如果我有一个带有可变键名称的 JSON 文件,如下所示:

{   
    "john": {"age": 40, "nickname": "jo"},
    "mary": {"age": 50, "nickname": "mo"}
}
Run Code Online (Sandbox Code Playgroud)

我如何使用jq它们的一些值来提取键?

示例:提取姓名及其年龄:

"john": 40
"mary": 50
Run Code Online (Sandbox Code Playgroud)

pea*_*eak 5

在您提到的特定情况下,可以使用以下过滤器:

to_entries[] | "\"\(.key)\": \(.value.age)"
Run Code Online (Sandbox Code Playgroud)

在输入中使用 -r 命令行选项(例如 jq -rf program.jq)会产生:

"john": 40
"mary": 50
Run Code Online (Sandbox Code Playgroud)

也可以看看:

使用jq递归提取对象值和父键名