2013-05-14 35 views
-2

我已經解析的JSON響應,並得到下面的字符串:如何分析這的queryString是JSON響應的所得

String queryString = "AQB=1&v1=somev1data&v25=somev25data&URL=http://www.someurl.com/configure/getvalues/request1=req1Passed&data2=somedataPassed&ce=UTF-8&ARB=1"; 

當我分割上述查詢字符串的輸出應爲:

AQB=1 
v1=somev1data 
v25=somev25data 
URL=http://www.someurl.com/configure/getvalues/request1=req1Passed&data2=somedataPassed 
ce=UTF-8 
ARB=1 

注意:
queryString總是變化,並且URL參數也總是變化。 AQB,v1 ..... v30,p1 .... p30,ce,pre,pe,URL,ARB都是預定義的變量名稱。

+2

的URL參數是沒有編碼的URL的照顧,所以沒有辦法知道它在哪裏結束,所以它可能是任何解析算法會在遇到第一個&時停止。 – SirDarius 2013-05-14 12:53:52

+0

您在20分鐘前發佈了相同類型的問題。爲什麼您再次發佈 – PSR 2013-05-14 12:55:02

+0

請看這裏http://stackoverflow.com/questions/16542313/not-able-to-perform-string-splitting相同類型的問題 – PSR 2013-05-14 12:56:00

回答

1

這是不可能的,除非URL參數正確的URL編碼,所以「&」字符將被轉義,以便不被解釋爲字段分隔符。

該字符串應該像這樣編碼:

String queryString = "AQB=1&v1=somev1data&v25=somev25data&URL=http%3A%2F%2Fwww.someurl.com%2Fconfigure%2Fgetvalues%2Frequest1%3Dreq1Passed%26data2%3DsomedataPassed&ce=UTF-8&ARB=1"; 

因爲它在你的問題被格式化,該字符串不能連續解析。

+0

我使用了queryString = URLDecoder.decode(JSONResponse,「UTF-8」);結果我得到了上述結果。 – user2649233 2013-05-14 13:03:43

+0

你是對的。我現在得到了解決方案。我不得不把JSON響應作爲queryString,並用'&'分割後,結果我需要使用URLDecoder.decode(); 謝謝大家的時間:) – user2649233 2013-05-14 13:23:13

0
StringTokenizer st = new StringTokenizer(queryString, "&"); 
while (st.hasMoreTokens()) { 
    System.out.println(st.nextToken()); 
} 

至於另一個海報指出,現在唯一剩下的事情就是採取