Как удалить escape-символы, когда JSON добавляется в модель в контроллере Spring Rest

Я извлекаю 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);
}

Но когда я вызываю службу из браузера, в ответ добавляются escape-символы.

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

{"результат":"{\"Ответ\":[{\"Id\":\"1\",\"Имя\":\"GAD\"},{\"Id\":\"2 \",\"Имя\":\"GBD\"}],\"Статус\":\"Успешно\"}"}

Не могли бы вы помочь мне отправить объект JSON клиенту в веб-службе без escape-символов.


person Anand Sai Krishna    schedule 14.10.2015    source источник
comment
Отправьте JSON как объект вместо строки. Или сделайте возвращаемый тип String и верните JSON напрямую.   -  person Shiju K Babu    schedule 14.10.2015
comment
Если вы используете Spring, вы можете использовать @ResponseBody и напрямую возвращать объект класса вместо String.   -  person Naman Gala    schedule 14.10.2015
comment
stackoverflow.com/questions/34427279/   -  person Karthik    schedule 19.06.2017


Ответы (4)


Вместо того, чтобы добавлять строку в модель, возвращайте JSON напрямую

@RequestMapping(value="/all")
public @ResponseBody String getJson(){
   //Logic
    return json; 
}
person Angelo Angeles    schedule 14.10.2015

Вы можете использовать replaceAll:

String json = serviceDao.getResponseJson();

if (json != null && !json.isEmpty()) {
    model.addAttribute("result", json.replaceAll("\\\\", ""));
}
person Guilherme Arthur de Carvalho    schedule 14.10.2015

Если вы используете Spring, вы можете использовать @ResponseBody и напрямую возвращать объект класса вместо String.

Вы можете сослаться на пример, приведенный в этом ссылка.

Также не забудьте включить зависимость maven.

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.12</version>
</dependency>
person Naman Gala    schedule 14.10.2015

Это точно сработает.

 String str = "result':'\'\'Respon'";
 String result = str.replaceAll("\\\'", ""); 
 Log.e("Result",result);
person Karan Nassa    schedule 14.10.2015