代码之家  ›  专栏  ›  技术社区  ›  Chris

jq筛选器-意外的“null”

  •  2
  • Chris  · 技术社区  · 7 年前

    输入json:

    {
      "id": 381,
      "name": "Module",
      "value": "C-A",
      "locked": false
    }
    {
      "id": 381,
      "name": "Module",
      "value": "",
      "locked": false
    }
    {
      "id": 381,
      "name": "Module",
      "value": "",
      "locked": false
    }
    

    我想删除所有未设置值的对象 "" 我有这样的过滤器,但它也可以打印 null -如何摆脱它?

    $ jq 'del(select(.value == ""))' /tmp/intest
    {
      "id": 381,
      "name": "Module",
      "value": "C-A",
      "locked": false
    }
    null
    null
    

    更新时间: 我还想联接非空值,但得到错误:

    $ jq 'select(.value!="")|.value|join(",")' /tmp/intest
    jq: error (at /tmp/intest:6): Cannot iterate over string ("C-A")
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   hek2mgl    7 年前

    只需还原逻辑:

    jq 'select(.value!="")'