如何使用“jq”修改较大 JSON 对象中任意位置的特定对象结构?

问题描述 投票:0回答:1

假设我有这个 JSON:

{
  "lunch": {
    "time": "11 am",
    "food": {
      "is_pizza": true
    }
  },
  "snacks": [
    {
      "time": "2 pm",
      "food": {
        "is_pizza": true
      }
    },
    {
      "time": "3:30 pm",
      "food": {
        "is_pizza": true
      }
    }
  ],
  "dinner": {
    "time": "6 pm",
    "food": {
      "is_pizza": true
    }
  }
}

现在我想遍历并且无论哪里我看到

"food"
对象,添加相同的键值对:

{
  "lunch": {
    "time": "11 am",
    "food": {
      "is_pizza": true,
      "extra_cheese": true
    }
  },
  "snacks": [
    {
      "time": "2 pm",
      "food": {
        "is_pizza": true,
        "extra_cheese": true
      }
    },
    {
      "time": "3:30 pm",
      "food": {
        "is_pizza": true,
        "extra_cheese": true
      }
    }
  ],
  "dinner": {
    "time": "6 pm",
    "food": {
      "is_pizza": true,
      "extra_cheese": true
    }
  }
}

我怎样才能在

jq
中做到这一点?

json jq
1个回答
2
投票

以下是如何使用 jq 命令行工具执行此操作

cat input.json | jq '. | walk(if type == "object" and has("food") then .food += {"extra_cheese": true} else . end)'
© www.soinside.com 2019 - 2024. All rights reserved.