java - 用于替换空 JSON 条目的正则表达式

标签 java regex

我有一大块 JSON,如下所示:

{"id": "2345", "in": "sadfasd647", "name": "Delta", "created": "2018-01-19", "updated": ""}

不幸的是,我发送的服务也不处理空白条目。我对源代码的控制有限,所以我正在寻找一些可以与 ReplaceAll 一起使用的 Java Regex 来删除所有空条目。

结果应该是这样的:

{"id": "2345", "in": "sadfasd647", "name": "Delta", "created": "2018-01-19"}

我得到的最接近的是:

string.replaceAll(",?\"*\":\\", "");

但是我收到了这个错误:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 7

最佳答案

试试这个正则表达式,第一个值也可以为空,但仍应正确替换:

(, "\w+": "")|("\w+": "",)

因此您的 Java 代码应如下所示:

String json = "{\"id\": \"2345\", \"in\": \"sadfasd647\", \"name\": \"Delta\", \"created\": \"2018-01-19\", \"updated\": \"\"}";
String result = json.replaceAll("(, \"\\w+\": \"\")|(\"\\w+\": \"\",)", "");
System.out.println(result);

打印如下结果:

{"id": "2345", "in": "sadfasd647", "name": "Delta", "created": "2018-01-19"}

关于java - 用于替换空 JSON 条目的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54338331/

相关文章:

java - 轮盘游戏中面板未显示

java.lang.NoSuchMethodError : javax. mail.internet.ParameterList.combineSegments()V

Java 正则表达式捕获组

Java 正则表达式 - 提取字符串中特定单元之前的所有 float

java - 当我尝试打印所有组时,我得到 "IndexOutOfBoundsException: No group 4"

java - Spark Kafka 流媒体问题

java - 如何用Java中的字符串 '2'替换字符串中的字符 "to"?

java - 如何为 JIRA API 生成 jwt token

regex - 将文件路径的一部分与正则表达式匹配

java - 用于匹配以变量结尾的文本的 xpath 表达式