首页 文章

正则表达式替换json字符串

提问于
浏览
0

是否有一个正则表达式我可以用来查找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\"");

2 回答

  • 1

    你做错了多件事 .

    • 你的正则表达式搜索以 = 而不是 : 开头的匹配项

    • 要捕获白色(空格),请使用 \s

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

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

  • 3

    : 替换正则表达式中的 =
    此外,您应该使用空格选择器而不是 [ ] .

    jsonString = jsonString.replaceAll(":\\s*(\\d+)", ": \"$1\"");

相关问题