2017-10-25 1 views
-1

Gibt es einen Regex-Ausdruck, den ich verwenden kann, um alle Zahlen in JSON-Zeichenfolge zu finden und sie in Anführungszeichen zu ersetzen?Regex in JSON Zeichenfolge ersetzen

Zum Beispiel in der folgenden JSON-Zeichenfolge möchte ich die Id und Phone-Werte durch doppelte Anführungszeichen ersetzen.

String jsonString = " [ 
{ 
    "FirstName": "abc", 
    "Email" : "[email protected]", 
    "Id" : 1, 
    "Phone" : 1234567890, 
    "Date": "2 May 2016 23:59:59" 

}, 
{ 
    "FirstName": "xyz", 
    "Email" : "[email protected]", 
    "Id" : 2, 
    "Phone" :, 
    "Date": "3 May 2016 23:59:59" 

} 
] "; 

Ich möchte folgende Ausgabe erhalten:

[ 
    { 
     "FirstName":"abc", 
     "Email" : "[email protected]", 
     "Id" : "1", 
     "Phone" : "1234567890", 
     "Date": "2 May 2016 23:59:59" 

    }, 
    { 
     "FirstName":"xyz", 
     "Email" : "[email protected]", 
     "Id" : "2", 
     "Phone" : "", 
     "Date": "3 May 2016 23:59:59" 

    } 
    ] 

I Linie versucht, unten, aber es funktioniert nicht. Irgendwelche Ideen?

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

Antwort

3

Sie machen mehrere Dinge falsch.

  • Ihre Regex sucht nach Übereinstimmungen mit einem = statt :
  • beginnen zu erfassen weiß (Raum) verwenden \s

Hier ist Ihre richtige regex: https://regex101.com/r/sRDXMP/2/

Und hier ist Ihre fester Code: jsonString = jsonString.replaceAll(":\\s([\\d]+)", ": \"$1\"");

+0

Das Zurückweichen des Backslash selbst ist kein Fehler, das ist Java-Syntax (leider) –

+0

@ MichaelA.Schaffrath danke, das Code-Snippet aktualisiert. – Boratzan

1

Ersetzen Sie die = in Ihrem regulären Ausdruck von :
Auch Sie den Leerwähler statt [ ] verwenden sollten.

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

+0

Ich habe auch ein Datum-Objekt. also das: sollte nicht ersetzt werden. Ich habe meinen Beitrag wieder bearbeitet. –

+0

Dann müssen Sie nur ein Komma oder eine geschweifte Klammer nach Ihren Ziffern erwarten: '": \\ s * (\\ d +) \ s * [,}] "' –

Verwandte Themen