【问题标题】:how to output all the keys and values from json using jq?如何使用 jq 从 json 输出所有键和值?
【发布时间】:2021-01-21 13:20:10
【问题描述】:

我正在尝试从我的 json 文件中取出与值“data10=true”匹配的所有数据匹配“data10=true”?

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

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

【问题讨论】:

  • 你能提供一些输入和所需的输出样本吗?

标签: json yaml key jq pipeline


【解决方案1】:

具体要求不清楚,但希望您能够使用以下 jq 程序作为指导:

..
| objects
| select( .data10 == "true" )
| to_entries[]
| select(.key != "data10")
| [.key, .value]

这将递归地检查输入中的所有 JSON 对象(感谢最初的 ..)。

附言

如果要根据 .data10 是"true" 还是true 进行选择,可以将条件更改为.data10 | . == true or . == "true"

【讨论】:

  • 我在 github 中有一个名为 data.json 的文件,我从我的 YAML 模板中调用此文件 --- 触发器:- 无 池:名称:托管 Ubuntu 1604 步骤:- 脚本:| displayName: '更新 readme.txt 中的内部版本号' name: JQ sudo apt-get install jq echo 'installing jq' curl raw.githubusercontent.com/test/… data=$(jq .. objects | select( .data10 == true ) | to_entries[ ] | select(.key != "data10") | [.key, .value]' data.json) 运行这个我得到一个错误:语法错误:文件意外结束。
  • 您似乎缺少第一个管道符号和必要的单引号。如果您要在命令行中包含 jq 程序,则调用应如下所示:jq '.. | objects .......' data.json
  • 感谢 peak 似乎通过了,但我没有得到任何值。这是我的 data.json 文件:{ "FOO": { "data10":"true", "name": "唐纳德”,“位置”:“斯德哥尔摩”},“BAR”:{“data10”:“true”,“名称”:“沃尔特”,“位置”:“斯德哥尔摩”},“BAZ”:{“data10” :"true", "name": "Jack", "location": "Whereever" } }
  • 我的错误。我写了true 而不是"true"。改变了。
【解决方案2】:
jq 'to_entries | map(select(.value.data10=="true")) | from_entries' data.json

输入data.jsonfalse 值:

{
  "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

【讨论】:

  • @rayaurelius - 如果它是完美的,它会适合它。
猜你喜欢
  • 2021-02-17
  • 2017-02-09
  • 1970-01-01
  • 2018-11-27
  • 2021-03-15
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 2014-05-31
相关资源
最近更新 更多