【问题标题】:Remove empty lists json regex?删除空列表json正则表达式?
【发布时间】:2017-07-13 09:50:04
【问题描述】:

我想解析一个 json 字符串并删除空列表。例如:

JSON 字符串输入:

{
  "rootname" : {
    "key1" : [ "lbl1", "lbl2" ],
    "key2" : 10,
    "key3" : [ ],
    "key4" : "hello",
    "key5" : []
  }
}

我想要这样的输出:

{
  "rootname" : {
    "key1" : [ "lbl1", "lbl2" ],
    "key2" : 10,
    "key4" : "hello"
  }
}

空列表已删除。

如何在 java 中使用正则表达式?

【问题讨论】:

  • 为什么要用正则表达式?
  • 你为什么要为此使用正则表达式?解析你的 JSON
  • 检查 if JSONArray.isNull();如果为真则删除它

标签: java json regex string


【解决方案1】:

您需要在这里解析 json 而不是使用正则表达式。然而,这可以通过正则表达式通过以下方式解决:

按此搜索:

\"[^"]*\"\s*:\s*\[\s*\],?

并替换为 empty 。即“”

Demo

【讨论】:

    【解决方案2】:

    Regexp 听起来像是处理 json 的一个有趣的选择,但如果你愿意,你可以执行以下操作:

    /"[^"]*"\s*:\s*\[\s*\]\s*,?\s*//g
    

    什么都没有替换"[^"]*"\s*:\s*\[\s*\]\s*,?\s*\s*匹配一系列空格/制表符/换行,,?匹配是否有昏迷)

    例如匹配
    "key3" : [ ],
    "key5" : []

    "s0me_Other Key":[   
    
    ],
    

    因此删除所有找到的,包括潜在的换行符!

    但可能会出现问题,如果其他人中有空数组,在删除一次空数组后会为空,例如:

    "key": [
       [ ]
    ]
    // will be unchanged
    

    "key": {
      "key2": []
    }
    
    // will become
    "key": {}
    

    【讨论】:

    • 该答案与之前提供的其他答案有何不同?
    • 是的,只是等价;我们在我想象的同时发布,当我完成时,没有其他答案^^
    • 没什么大不了的,冷静……顺便说一句,有一个!只是按旧排序:)
    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 2011-11-01
    • 2012-11-15
    • 2020-10-27
    • 2021-04-10
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    相关资源
    最近更新 更多