2012-04-02 178 views
1

已經解決了我的問題 - 帖子可以刪除。感謝你們所有人的幫助。分割逗號分隔的字符串(與一些' {[字符)

我需要一些在Java中分割字符串的幫助。我有一個這樣的字符串:

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

我需要拆分它,這樣我會有的HashMap:

  1. 鍵 - >值1
  2. key2->數值2
  3. KEY3 - >(與解析{ 'innerKey1'=> 'innerValue1' ...})內的HashMap
  4. ...

它應該工作,當我嘗試從key3解析值時,它會以相同的方式再次分割它。內部元素可能有很多層次。我還需要它來處理特殊字符,如'或\鍵和值部分。我使用的是這樣的:

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

,但我不知道如何對待整個{...}的價值不是用逗號分割的。

我在想爲此使用JSON,但也許有人知道一些正則表達式或小函數會比傾斜JSON庫更快。

+0

你正在做你自己的序列化,這是一個壞主意。如果您有一些遠程可能性將該字符串修復爲JSON(或其他序列化格式),請執行此操作。學習JSON不僅僅是調用編碼/解碼功能。你不能使用regexp輕鬆地解析這樣的結構。 – Nanne 2012-04-02 09:53:59

+0

我知道,但遺留代碼,你沒有太多的選擇 – user1307657 2015-07-24 13:01:51

回答

0

你試圖解析它的字符串肯定是JSON。和國際海事組織,而不是重新發明自己的JSON解析庫,請考慮使用:

1)Jackson

2)google-gson

我個人比較喜歡,因爲它傑克遜的簡單性。

0

你應該考慮一個解析器

拆分只是爲了簡單,並將在特殊情況下失敗。

解析器能夠生成全面的錯誤消息。 隨着分裂你非常快非常丟失