java - 正则表达式替换 json 字符串

标签 java json regex

是否有一个正则表达式可以用来查找 JSON 字符串中的所有数字并将它们替换在双引号内?

例如,在下面的 JSON 字符串中,我想用双引号替换 Id 和 Phone 值。

String jsonString = " [ 
{ 
   "FirstName": "abc",  
   "Email" : "a@a.com",
   "Id" : 1,
   "Phone" : 1234567890,
   "Date": "2 May 2016 23:59:59"

}, 
{  
   "FirstName": "xyz",  
   "Email" : "b@b.com",
   "Id" : 2,
   "Phone" : 9876543210,
   "Date": "3 May 2016 23:59:59" 

} 
] ";

我想得到以下输出:

[ 
    { 
       "FirstName":"abc",  
       "Email" : "a@a.com",
       "Id" : "1",
       "Phone" : "1234567890",
       "Date": "2 May 2016 23:59:59"

    }, 
    {  
       "FirstName":"xyz",  
       "Email" : "b@b.com",
       "Id" : "2",
       "Phone" : "9876543210",
       "Date": "3 May 2016 23:59:59"  

    } 
    ] 

我尝试了下面的行,但它不起作用。有什么想法吗?

 jsonString = jsonString.replaceAll("=[ ]*([\\d]+)", "= \"$1\""); 

最佳答案

你做错了很多事情。

  • 您的正则表达式搜索以 = 开头的匹配项,而不是 :
  • 要捕获白色(空格),请使用 \s

这是正确的正则表达式:https://regex101.com/r/sRDXMP/2/

这是您的固定代码: jsonString = jsonString.replaceAll(":\\s([\\d]+)", ":\"$1\"");

关于java - 正则表达式替换 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46932557/

相关文章:

java - 单选按钮无法正确显示

java - 如何添加 EditText(s) 和带有按钮的复选框?

python - 为什么我的正则表达式与我需要的电话号码不匹配?

regex - (.)+ 在正则表达式中的行为是什么?

python - 正则表达式查找句子中的首字母缩写

java - Eclipse - 刚刚卸载了 Java 1.7(我的机器上仍然有 Java 1.6),但现在 Eclipse 无法识别任何 java 内容

java - 六角网格上的元胞自动机

c++ - 用于 2D RPG 的 XML vs YAML vs JSON

android - JSONObject.put 字符串方法向 JSON 字符串添加额外\字符

python - 迭代列表并按位置从嵌套字典返回值