【问题标题】:Leave only fields with string values仅保留具有字符串值的字段
【发布时间】:2021-01-04 20:03:13
【问题描述】:

我有一个这样的 JSON 结构:

{
  "1": "a-secret",
  "A": "b-secret",
  "2": {
    "3": "ab-secret",
    "4": {
      "5": "adc-secret"
    },
    "6": {
      "7": "abdc-secret"
    }
  }
}

我正在尝试创建一个命令(最好是一行)来返回只有字符串值的密钥对。所以对于上面它会返回:

{
  "1": "a-secret",
  "A": "b-secret"
}

我发现 .[]|strings 只返回字符串值,但我需要键和值,这就是我难过的地方!

【问题讨论】:

    标签: json string jq key-value


    【解决方案1】:

    您正在寻找map_values

    $ jq 'map_values(strings)' file
    {
      "1": "a-secret",
      "A": "b-secret"
    }
    

    【讨论】:

      【解决方案2】:

      作为替代解决方案,尤其是在 jq-1.6 之前的版本上,您可以使用 with_entries 过滤类型为 string 的值

      with_entries(select(.value | type == "string"))
      

      【讨论】:

        猜你喜欢
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2021-07-25
        • 2014-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多