Java 要在json字符串中替换的正则表达式

Java 要在json字符串中替换的正则表达式,java,json,regex,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

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

将正则表达式中的
=
替换为

此外,您应该使用空白选择器,而不是
[]


jsonString=jsonString.replaceAll(“:\\s*(\\d+”,“:\”$1\”)

将正则表达式中的
=
替换为

此外,您应该使用空白选择器,而不是
[]


jsonString=jsonString.replaceAll(“:\\s*(\\d+”,“:\”$1\”)

您做错了很多事情

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


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

您做错了很多事情

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


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

转义反斜杠本身不是错误,这是Java语法(不幸)@MichaelA.Schaffrath谢谢,更新了代码段。转义反斜杠本身不是错误,这是Java语法(不幸)@MichaelA.Schaffrath谢谢,更新了代码段。我还有一个日期对象。因此:不应被取代。我又编辑了我的文章。然后你只需要在你的数字后面加一个逗号或右括号:
“:\\s*(\\d+)\s*[,}]”
我还有一个日期对象。因此:不应被取代。我又编辑了我的文章。然后你只需要在你的数字后面加一个逗号或右括号:
“:\\s*(\\d+)\s*[,}]”