【问题标题】:Delete an element when a key of element is not found by jqjq找不到元素的键时删除元素
【发布时间】:2021-06-21 21:40:03
【问题描述】:

当使用 jq 找不到特定键时,我想删除一些元素。在下面的 json 文件中,我需要删除第一项和第二项,因为它们没有键“Case”。

[
  {
    "label": "US : USA : English",
    "Country": "USA",
    "region": "US",
    "Language": "English",
    "locale": "en",
    "currency": "USD",
    "number": "USD"
  },
  {
    "label": "AU : Australia : English",
    "Country": "Australia",
    "region": "AU",
    "Language": "English",
    "locale": "en",
    "currency": "AUD",
    "number": "AUD"
  },
  {
    "Case": "1",
    "label": "CA : Canada : English",
    "Country": "Canada",
    "region": "CA",
    "Language": "English",
    "locale": "en",
    "currency": "CAD",
    "number": "CAD"
  }
]

输出将是:

[
  {
    "Case": "1",
    "label": "CA : Canada : English",
    "Country": "Canada",
    "region": "CA",
    "Language": "English",
    "locale": "en",
    "currency": "CAD",
    "number": "CAD"
  }
]

【问题讨论】:

    标签: json select jq


    【解决方案1】:

    刚刚想出了我的解决方案:

    del(.[] | select(.Case == null))
    

    【讨论】:

      【解决方案2】:

      这可以通过保留定义了.Case 的元素来实现。

      map(select(.Case != null))
      

      jqplay

      如果不会遇到.Case == false,则上述简化为

      map(select(.Case))
      

      jqplay

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-24
        • 1970-01-01
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-12
        相关资源
        最近更新 更多