2013-03-04 62 views
0

當我發送TextEdit數據作爲JSON數據作爲";的組合時,應用程序每次都會失敗。 詳細,如果我輸入我的用戶名,只能作爲密碼";生成的JSON文件看起來像: -特定特殊字符原因的組合錯誤

{"UserName":"[email protected]","Password":"\";"} 

我尋覓了很多,有什麼我可以理解爲結果的JSON數據voilates導致語法在拋出默認異常。我試圖通過使用URLEncoder.encode()方法來擺脫特殊符號。但現在問題在於解碼。 任何幫助在任何步驟將非常感激。

的logcat:

I/SW_HttpClient(448): sending post: {"UserName":"[email protected]","Password":"\";"} 
I/SW_HttpClient(448): HTTPResponse received in [2326ms] 
I/SW_HttpClient(448): stream returned: <!DOCTYPE html PUBLIC ---- AN HTML PAGE.... A DEFAULT HANDLER> 
+2

「應用程序失敗」的解決方案並沒有給我們很多信息。什麼*確切*發生,在哪裏,使用什麼代碼? – 2013-03-04 08:56:20

+0

如果失敗,那麼你有一個Logcat形式的好消息在這裏分享它 – 2013-03-04 08:57:16

+0

準確地說 - 它正在拋出Uncaught異常,它是由我的默認異常處理程序處理的。 – Saty 2013-03-04 08:57:44

回答

0

喜試試下面的代碼

String EMPLOYEE_SERVICE_URI = Utils.authenticate+"?UserName="+uid+"&Email="+eid+"&Password="+URLEncoder.encode(pwd,"UTF-8"); 
+0

對不起,但我已經提到,我已經嘗試URLEncoder.encode()method.It轉換「;%22%3B,我不知道如何解碼。 – Saty 2013-03-04 09:05:58

+0

我真的不明白這個答案是如何相關。問題是關於JSON而不是URL – 2013-03-04 09:07:00

+0

你有沒有在'pwd,「UTF-8」'中提到這個方法,如果不檢查一次... – androidgeek 2013-03-04 09:07:28

0

您的問題提供有效的JSON。

JSON規範要求字符串中的雙引號用反斜槓進行轉義。閱讀這裏的語法圖 - http://www.json.org/

如果在解析該JSON時某些事情正在拋出異常,那麼解析器有問題,或者異常意味着其他問題。


我尋覓了很多,有什麼我可以理解爲結果的JSON數據voilates語法

你的理解是不正確。

我試圖通過使用URLEncoder.encode()方法擺脫特殊符號。

這是一個錯誤,只會使事情變得更糟:

  1. 反斜槓應該在那裏。
  2. 服務器或處理JSON的任何東西都不會期望從完全不同的標準中隨機轉義。

但是現在問題在於解碼。

沒錯。

+0

反斜槓不是分號的轉義字符......不在java atleast中。 – Saty 2013-03-04 09:24:33

0

按照提供JSON可以通過GSON庫解析下面的代碼

private String sampledata = "{\"UserName\":\"[email protected]\",\"Password\":\"\\\";\"}"; 

Gson g = new Gson(); 
g.fromJson(sampledata, sample.class); 



public class sample { 

    public String UserName; 
    public String Password; 
} 
0

對於文本解碼我買了..

URLDecoder.decode(String, String);