7

我正在获取存储在 DB 中的 JSON(JSON 作为字符串存储在 DB 中)并将其添加到控制器中的模型对象中。

@RequestMapping( method = RequestMethod.GET, value = "/all" )
public void getJson(HttpServletRequest httpServletRequest, Model model){

    String json = serviceDao.getResponseJson(); 
    System.out.println(json); //Output: {"Response":[{"Id":"1","Name":"GAD"},{"Id":"2","Name":"GBD"}],"Status":"Success"}
    model.addAttribute("result",json);
}

但是当我从浏览器调用服务时,会添加转义字符作为响应。

http://localhost:8080/MyApplication/all.json

{"结果":"{\"响应\":[{\"Id\":\"1\",\"Name\":\"GAD\"},{\"Id\":\"2 \",\"名称\":\"GBD\"}],\"状态\":\"成功\"}"}

您能否帮助我在没有转义字符的情况下通过 Web 服务将 JSON 对象发送到客户端。

4

4 回答 4

4

而不是将字符串添加到模型中直接返回 JSON

@RequestMapping(value="/all")
public @ResponseBody String getJson(){
   //Logic
    return json; 
}
于 2015-10-14T05:50:54.250 回答
0

它肯定会起作用。

 String str = "result':'\'\'Respon'";
 String result = str.replaceAll("\\\'", ""); 
 Log.e("Result",result);
于 2015-10-14T05:49:06.693 回答
0

如果您使用的是spring,您可以使用@ResponseBody并直接返回您的类对象而不是String。

您可以参考此链接中给出的示例。

也不要忘记包含 Maven 依赖项。

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.12</version>
</dependency>
于 2015-10-14T05:49:55.487 回答
0

您可以使用replaceAll:

String json = serviceDao.getResponseJson();

if (json != null && !json.isEmpty()) {
    model.addAttribute("result", json.replaceAll("\\\\", ""));
}
于 2015-10-14T05:46:33.513 回答