2012-04-02 8 views
1

Bereits behoben mein Problem - Beitrag kann gelöscht werden. Danke Ihnen allen für Ihre Hilfe.Splitting Komma getrennte Zeichenfolge (mit einigen von ' {[Zeichen]

Ich brauche Hilfe bei der Aufteilung der Zeichenfolge in Java. Ich habe einen String wie folgt aus:

{'key'=>value1,'key2'=>'value2','key3'=>{'innerKey1'=>'innerValue1'...} ...} 

Ich brauche es zu spalten, so dass ich HashMap haben würde:

  1. Key-> Wert1
  2. key2-> value2
  3. key3 -> (Innen HashMap mit analysiert { 'innerKey1' => 'innerValue1' ...})
  4. ...

Es sollte funktionieren, wenn ich versuche, Wert von Schlüssel3 zu analysieren, würde es es auf die gleiche Weise wieder teilen. Es könnte viele Ebenen von inneren Elementen geben. Ich brauche es auch, um mit Sonderzeichen wie 'oder \ in Schlüssel- und Wertteil zu arbeiten. Ich habe so etwas wie dies:

result = string.split(",(?=([^\"]*\"[^\"]*\")*(?![^\"]*\"))"); 

aber ich weiß nicht, wie ganze {...} zu behandeln, als Wert nicht durch Komma zu splitten.

Ich denke über die Verwendung von JSON für diese, aber vielleicht jemand wissen, einige Regexp oder kleine Funktion, die schneller als Lehnen JSON-Bibliotheken wäre.

+0

Sie machen Ihre eigene Serialisierung, die eine schlechte Idee ist. Wenn Sie eine entfernte Möglichkeit haben, diese Zeichenfolge in einem JSON (oder einem anderen serialisierten Format) zu reparieren, tun Sie dies bitte. JSON zu lesen ist nicht viel mehr als nur die Enkodierungs-/Dekodierungsfunktionen aufzurufen. Sie werden Strukturen wie diese nicht einfach mit regexp analysieren können. – Nanne

+0

Ich weiß aber Legacy-Code und Sie haben nicht viel Auswahl – user1307657

Antwort

0

Die Zeichenfolge, die Sie versuchen, es definitiv JSON zu analysieren. Und IMO, statt Ihre eigene JSON Parsing-Bibliothek neu zu erfinden, beachten Sie bitte mit:

1) Jackson

2) google-gson

Ich persönlich Jackson bevorzugen wegen seiner Einfachheit.

0

Sie sollten lieber einen Parser betrachten.

Um split ist nur zu einfach und wird auf Sonderfälle fehlschlagen.

Und ein Parser ist in der Lage, umfassende Fehlermeldungen zu generieren. Mit Splitting sind Sie sehr schnell sehr verloren

Verwandte Themen