Mein String-Eingang ist so etwas wie:ersetzen Teil des String von Regular Expression
{"key1":"value1","key2":"{\"key2_1\":\"123\",\"key2_2\":\"456\",\"key2_3\":\"33333\"}"}
Die Wertfelder in der obigen JSON könnte Zeichen wie "
, \
und so weiter enthalten. Für Ihre convience hier ist die formatierte Version:
{
"key1": "value1",
"key2": "{\"key2_1\":\"123\",\"key2_2\":\"456\",\"key2_3\":\"33333\"}"
}
Ich möchte Gson verwenden, um den String in eine Foo-Objekt zu konvertieren:
class Foo {
private String key1;
private Bar key2;
...
}
class Bar {
private String key2_1;
private String key2_2;
private String key2_3;
...
}
Hier ist mein regulärer Ausdruck:
String regexp = "\\{[\"a-zA-Z-0-9:,\\\\]*\"key2\":\"\\{\\\\\"key2_1\\\\\":\\\\\"[a-zA-Z0-9]*\\\\\",\\\\\"key2_2\\\\\":\\\\\"[a-zA-Z0-9]*\\\\\",\\\\\"key2_3\\\\\":\\\\\"[a-zA-Z0-9]*\\\\\"\\}\"\\}[\"a-zA-Z-0-9:,\\\\]*";
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(text);
if(matcher.matches()) {
... // TODO: Replace all "{, \" and }" but How???
}
Wie kann ich diesen regulären Ausdruck verwenden, um alle "{
, \"
. Und "}
inzu ersetzen, "
, }
ohne die Schlüssel und Werte in JSON zu ändern?
Das Finden der Unterzeichenfolge und die Verwendung der Ersetzungsmethode von String ist meine Sicherungslösung.
Noch einmal, mein ultimatives Ziel ist es, den Input String in mein Foo-Objekt zu zerlegen. Gibt es einen besseren Weg als den regulären Ausdruck?
Vielen Dank!
Sollte es nicht einfach so gut funktionieren? – Shark
@Shark Matcher gibt nur einen booleschen Wert zurück. Ich konnte den String nicht in "so einfach" umwandeln.Bitte beachten Sie, dass der Eingabewert von key2 ein String ist und im Foo-Objekt das entsprechende Feld ein Bar-Objekt ist. –
Was ich meine ist, das JSON enthält bereits ein 'Bar'-Objekt; sollte es nicht gut in eine "Foo" -Instanz zerlegen? – Shark