2017-01-03 4 views
0

Я пишу отдых api. Все вещи установлены и в порядке. Мой контроллер:Возвращая строку, она добавляет дополнительную косую черту в строку

@RequestMapping(value = "/getDetails", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody 
public String getDetails(@RequestBody String jsonInput) { 
    LOGGER.info("<------------------------ from Date :" + jsonInput); 
    System.out.println("resp ="+apiService.getDetails(jsonInput)); 
    return apiService.getDetails(jsonInput); 

} 

Когда я SYSOUT ответ на консоли он будет печатать обычную строку как -

[{"name": "abc","vendor": "abc df"}] 

Но я получаю respnse с дополнительной косой черты. Все двойные кавычки заменяются \».

"[{\"name\":\"abc\",\"vendor\":\"abc df\"}]" 

Пожалуйста, помогите!. Заранее спасибо.

+1

Это ожидаемое поведение Параметр '\' экранирует специальные символы, чтобы они могли быть напечатаны досмотре 'Map()' объект может показать аналогичный результат –

+0

я нашел более тонкий вопрос, http://stackoverflow.com/questions/3020094/how-should-i-es cape-strings-in-json –

+0

Уже сделано это при преобразовании строки в объект в json Gson gson = new GsonBuilder(). disableHtmlEscaping(). create(); \t \t Строка jsonRes = gson.toJson (resp); – Samir

ответ

0

Это, как ожидается, так что объект может быть восстановлен позже. П„\“экранирует цитату. Вы можете заменить «\» с пустой строкой:...

@ResponseBody 
public String getDetails(@RequestBody String jsonInput) { 
    LOGGER.info("<------------------------ from Date :" + jsonInput); 
    System.out.println("resp ="+apiService.getBillingDetails(jsonInput)); 
    return apiService.getDetails(jsonInput).replace("\\", ""); 

} 
+0

Нет. Это не работает. ( Это то, что я рассказываю, когда печатаю sysout, который печатает обычный JSON. Но я получаю дополнительную косую черту в почтовом инструменте или любом другом инструменте для отдыха api. – Samir