首页 > 解决方案 > 如何使用 jq 从 json 中输出所有键和值?

问题描述

我正在尝试从我的 json 文件中删除与值“data10 = true”匹配的所有数据,但它只获取名称,我该如何制作它,以便它将输出我的 json 文件中与“匹配”的所有内容数据10=真”?

这就是我得到的 data=$(jq -c 'to_entries[] | select (.value.data10 == "true")| [.key, .value.name]' data.json )

顺便说一句,这是在我的 YAML 模板中,将其作为管道在 devops 中运行。

标签: jsonyamlkeyjqpipeline

解决方案


jq 'to_entries | map(select(.value.data10=="true")) | from_entries' data.json

输入data.json,具有false值:

{
  "FOO": {
    "data10": "false",
    "name": "Donald",
    "location": "Stockholm"
  },
  "BAR": {
    "data10": "true",
    "name": "Walt",
    "location": "Stockholm"
  },
  "BAZ": {
    "data10": "true",
    "name": "Jack",
    "location": "Whereever"
  }
}

输出:

{
  "BAR": {
    "data10": "true",
    "name": "Walt",
    "location": "Stockholm"
  },
  "BAZ": {
    "data10": "true",
    "name": "Jack",
    "location": "Whereever"
  }
}

基于:https ://stackoverflow.com/a/37843822/983325


推荐阅读