2015-10-14 46 views
0

我正在讀取存儲在數據庫中的JSON(JSON作爲字符串存儲在數據庫中)並將其添加到控制器中的模型對象中。如何在JSON添加到彈簧休息控制器中的模型時刪除轉義字符

@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 \」 \ 「名稱\」:\ 「GAD \」} ,「\」,\「Name \」:\「GBD \」}],\「Status \」:\「Success \」}「}

Can you請幫助我在不使用轉義字符的情況下將JSON對象發送到Web服務中的客戶端。

+0

發送JSON作爲對象,而不是弦模型。或者將返回類型設置爲String並直接返回JSON。 –

+0

如果你使用spring,你可以使用@ResponseBody並直接返回你的類對象而不是String。 –

+0

https://stackoverflow.com/questions/34427279/how-do-i-pass-this-escaped-json-with-gson-java – Karthik

回答

1

而不是添加字符串返回JSON直接

@RequestMapping(value="/all") 
public @ResponseBody String getJson(){ 
    //Logic 
return json; 

}

0

可以使用的replaceAll:

String json = serviceDao.getResponseJson(); 

if (json != null && !json.isEmpty()) { 
    model.addAttribute("result", json.replaceAll("\\\\", "")); 
} 
0

它一定會努力。

String str = "result':'\'\'Respon'"; 
String result = str.replaceAll("\\\'", ""); 
System.out.println(result); 
0

如果你使用spring,你可以使用@ResponseBody並直接返回你的類對象而不是String。

您可以參考link中給出的示例。

另外不要忘記包含maven依賴項。

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.12</version> 
</dependency>