【问题标题】:deleting objects which contain specific key JSON删除包含特定键 JSON 的对象
【发布时间】:2018-06-13 16:45:20
【问题描述】:

您好,我有一个 JSON 文件,如下所示:

{"a" :[ 
       {
            "b": "name_1",
            "c":[
                   {"d": "value_1", "e": "true"},
                   {"d": "value_2"},
                   {"d": "value_3", "e": "true"}
                ]
       },
       {
           "b": "name_2",
           "c":[
                   {"d": "value_4", "e": "true"},
                   {"d": "value_5"},
                   {"d": "value_6"}
                ]}
       ] 

}

我想删除“c”中包含键“e”的所有对象。

我尝试使用 JQ,但我无法获得正确的命令/过滤器...

最近的我来了...https://jqplay.org/s/fDzVed_Isv

【问题讨论】:

    标签: arrays json key


    【解决方案1】:

    要删除包含您必须键入的键的对象:

    jq 'del( .a[].c[] | select(has("e")))' 
    

    https://jqplay.org/s/B-JW8wnqG3

    感谢@steeldriver 在这篇文章中回答了这个问题 https://askubuntu.com/questions/1046215/find-substring-in-file/1046230?noredirect=1#comment1706714_1046230

    【讨论】:

      【解决方案2】:

      检查您的链接,我发现您为这些删除返回 NULL。

      您可能想要使用splice,而不是delete。

      参考:Delete Javascript object item adding null value

      否则,您可以使用地图中的地图来执行此操作。

      var obj = {"a" :[ 
             {
                  "b": "name_1",
                  "c":[
                         {"d": "value_1", "e": "true"},
                         {"d": "value_2"},
                         {"d": "value_3", "e": "true"}
                      ]
             },
             {
                 "b": "name_2",
                 "c":[
                         {"d": "value_4", "e": "true"},
                         {"d": "value_5"},
                         {"d": "value_6"}
                      ]}
             ] 
      
      }
      //console.log('obj is: ', obj)
      //console.log('obj.a is: ', obj.a)
      var array = obj.a
      var x = array.map(function(eachThing) {
          var newArr = eachThing.c
        newArr.map(function(eachObj) {
        console.log(eachObj)
        if (eachObj.e === "true")
        console.log('delete this!')
        })
      })
      x
      

      jsfiddle:http://jsfiddle.net/ethanryan/06mq5uk8/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-13
        • 2019-03-18
        • 2017-06-22
        • 2020-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多