【问题标题】:How do I use jq to not display keys depending on the value?如何使用 jq 不根据值显示键?
【发布时间】:2022-10-07 18:30:37
【问题描述】:

这是json文件。我正在尝试使用 jq 来显示 API 和方法的列表。

{
  \"paths\": {
    \"/api/A\": {
      \"get\": {
        \"summary\": \"lorem ipsum\",
        \"parameters\": [
          {
            \"name\": \"Guid\",
            \"description\": \"Guid\"
          }
        ]
      },
      \"put\": {
        \"summary\": \"Adds or updates an item\",
        \"parameters\": [
          {
            \"name\": \"lorem ipsum\",
            \"description\": \"lorem ipsum\"
          }
        ],
        \"deprecated\": true
      }
    }
  }
}

put 有一个密钥 deprecated,它设置为 true。 运行 jq \".paths|map_values(keys)\" json 会返回这个

{
  \"/api/A\": [
    \"get\",
    \"put\"
  ]
}

我如何不显示键put 只是因为它有子键\"deprecated\": true

    标签: jq


    【解决方案1】:

    您可以使用keys_unsorted 获取子密钥,并更新|= 以替换以前的内容:

    jq '.paths | .[] |= keys_unsorted' 
    
    {
      "/api/A": [
        "get",
        "put"
      ]
    }
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多