繁体   English   中英

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

[英]How to use jq to extract variable keys and their values from JSON?

如果我有一个具有可变键名的JSON文件,例如:

{   
    "john": {"age": 40, "nickname": "jo"},
    "mary": {"age": 50, "nickname": "mo"}
}

如何使用jq提取具有某些值的键?

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

"john": 40
"mary": 50

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

to_entries[] | "\"\(.key)\": \(.value.age)"

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

"john": 40
"mary": 50

也可以看看:

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

尝试这个:

to_entries[] | {(.key): .value.age}

输出:

{
  "john": 40
}
{
  "mary": 50
}

首先将对象转换为键/值对的数组; 那么您可以对其进行迭代并一并访问键和关联的值。

$ jq 'to_entries' tmp.json
[
  {
    "key": "john",
    "value": {
      "age": 40,
      "nickname": "jo"
    }
  },
  {
    "key": "mary",
    "value": {
      "age": 50,
      "nickname": "mo"
    }
  }
]
$ jq 'to_entries[] | "\(.key): \(.value.age)"' tmp.json
"john: 40"
"mary: 50"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM