【问题标题】:Iterate over JSON array using bash jq使用 bash jq 遍历 JSON 数组
【发布时间】:2021-12-06 17:45:15
【问题描述】:

我想使用 bash jq 通过索引遍历 JSON 文件中的数组,例如仅从该数组中的每个对象中获取名称:

{
  "items": [
    {
      "name": "item1",
      "year": "2021"
    },
    {
      "name": "item2",
      "year": "2020"
    }
  ]
}

关于如何实现这样的目标的任何想法?

item1name=`jq '.items'<???????> object.json | sed "s/\"//g"`

【问题讨论】:

  • jq 不是bash 的一部分。

标签: json bash jq


【解决方案1】:

你可以使用

jq -r '.items[] | .name' object.json

其中-r 选项用于删除包含名称值的双引号。

Demo

【讨论】:

  • 谢谢!有什么方法可以保存这个名称数组,然后我可以通过使用某种索引来动态使用这些名称?
  • 在谷歌搜索 Bash 数组后,我发现了这种遍历数组的方法:for i in ${!names[@]}; do printf "${names[$i]}" printf "\n" done
  • 使用 bash readarray 命令将 jq 的输出行捕获到 bash 数组中。 readarray -t names &lt; &lt;(jq -r ...)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多