2013-03-04 58 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);