shell 如何通过jq循环json对象?

57hvy0tb  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(178)

我有一个JSON对象,它不是一个数组。

{
  "affected-apps": {
    "result": "success",
    "outputs": {
      "affected_apps_array": [
        "logger",
        "aws-sdk-wrapper",
        "transaction",
        "deposit",
        "identity",
        "user",
        "core"
      ]
    }
  },
  "build-affected-apps": {
    "result": "success",
    "outputs": {}
  }
}

我想循环遍历对象,以找到任何result不等于success。我已经搜索了很多,但只找到了如何在JSON是数组的情况下做到这一点。但是我的json是一个对象。我如何为每个键循环遍历对象?

khbbv19g

khbbv19g1#

我认为你可以用途:

to_entries[] | select(.value.result != "success") | .key

这将产生结果不是“成功”的条目的键。使用您提供的JSON,它不会产生任何结果(因为所有步骤都成功了)。
使用以下JSON:

{
  "affected-apps": {
    "result": "success",
    "outputs": {
      "affected_apps_array": [
        "logger",
        "aws-sdk-wrapper",
        "transaction",
        "deposit",
        "identity",
        "user",
        "core"
      ]
    }
  },
  "build-affected-apps": {
    "result": "success",
    "outputs": {}
  },
  "load-affected-apps": {
    "result": "failure",
    "outputs": {}
  }
}

它将产生:

"load-affected-apps"

相关问题