为什么JSON会添加斜杠

时间:2014-07-16 11:19:18

标签: java mysql json servlets

我从这样的SQL查询创建一个Json:

while(result.next())
   items.add("sourcename"+"\""+":"+"\""+result.getString("name"));

我以这种方式检索它,并将其更改为JSONObject:

SqlConnector sqlConnector = new SqlConnector(); 
    ArrayList<String> items = sqlConnector.getSourceType(sqlConnector.getId("users", "username", username)); 
    JSONObject toSendBack = new JSONObject(); 
    JSONArray dataArray = new JSONArray(items);
    toSendBack.put("data", dataArray); 
    toSendBack.put("success", true); 
    response.getWriter().print(toSendBack.toString());
    response.setStatus(HttpServletResponse.SC_OK);

我在以下问题上遇到了一些问题:

toSendBack.put("data", dataArray);

我收到的JSON就是这样:

{"data":["sourcename\":\"Polo","sourcename\":\"BMW"],"success":true}

为什么? 我怎样才能删除这些斜杠?

3 个答案:

答案 0 :(得分:2)

看起来您手动创建JSON行不正确。我怀疑它应该是:

items.add("\"sourcename\":\""+result.getString("name")+"\"");

虽然“name”中有双引号,但事情会出错。最好的办法是使用合适的JSON库来自己处理所有这些。

答案 1 :(得分:0)

不要删除斜杠,因为当您将整个对象显示为字符串时,这就是JSON标准的定义方式。如果从JSONObject中提取字符串,则删除斜杠。

编辑:要找出JSON如何将字符串更改为自己的“内部”用法表示法的规则,请参阅http://json.org/了解字符串类型。

答案 2 :(得分:0)

如果你想要实现的目标是这样的:sourcename:"Polo"slash用于将""添加到字符串中,请尝试:

while(result.next())
   items.add("sourcename"+"\""+result.getString("name")+"\"");