0

当我将 TextEdit 数据作为 JSON 发送时,数据作为 ";应用程序的组合每次都会失败。详细来说,如果我输入的用户名不是密码,";则生成的 JSON 文件如下所示:-

{"UserName":"qa@1.com","Password":"\";"}

我搜索了很多,我能理解的是结果 JSON 数据破坏了导致抛出默认异常的语法。URLEncoder.encode()我试图通过使用方法摆脱特殊符号。但现在问题在于解码。任何步骤的任何帮助都将非常感激。

日志猫:

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

4 回答 4

0

您在问题中提供的 JSON 是有效的。

JSON 规范要求字符串中的双引号用反斜杠转义。在此处阅读语法图 - http://www.json.org/

如果在解析该 JSON 时出现异常,则说明解析器有问题或异常意味着其他内容。


我搜索了很多,我能理解的是生成的 JSON 数据违反了语法

你的理解是不正确的。

我试图通过使用 URLEncoder.encode() 方法摆脱特殊符号。

这是一个错误,只会让事情变得更糟:

  1. 反斜杠应该在那里。
  2. 服务器或处理 JSON 的任何东西都不会期望从完全不同的标准中随机转义。

但现在问题在于解码。

确切地。

于 2013-03-04T09:09:56.113 回答
0

以下提供的 JSON 可以通过 GSON 库使用以下代码进行解析

private String sampledata = "{\"UserName\":\"qa@1.com\",\"Password\":\"\\\";\"}";

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



public class sample {

    public String UserName;
    public String Password;
}
于 2013-03-04T09:26:22.177 回答
0

为了解码文本,我得到了解决方案..

 URLDecoder.decode(String, String);
于 2013-03-05T12:20:39.347 回答
0

嗨试试下面的代码

String EMPLOYEE_SERVICE_URI = Utils.authenticate+"?UserName="+uid+"&Email="+eid+"&Password="+URLEncoder.encode(pwd,"UTF-8");
于 2013-03-04T08:59:53.007 回答