Java Spring: веб-служба REST, создающая двойной обратный слеш в JSON

1

Поэтому у меня есть эта строка, например

"B\z@b@s@rB{FpMgBrD~DK|"

Но Весна производит это на json:

"B\\z@b@s@rB{FpMgBrD~DK|"

И это то же самое с любой строкой, которая имеет обратную косую черту \. Замена символа перед генерацией json бесполезна, поскольку строка корректна до генерирования json.

Каждый клиент, который потребляет услугу, может заменить ("\\", "\\\\") json, но мне интересно, будет ли более чистый способ решить проблему и на стороне сервера.

Вот код для WS:

@RequestMapping(value = "/rest/sinc/{ms}", method = RequestMethod.GET, produces="application/json;charset=UTF-8")
@ResponseBody
public String sincronizar(@PathVariable("ms") Long ms) {
    return sincService.getSinc(ms).toString();
}

Я пробовал другие способы генерации json с такими библиотеками, как Gson, но результат тот же.

Теги:
spring
spring-mvc
rest

1 ответ

2
Лучший ответ

Это ожидаемое поведение в JSON. \ должны быть экранированы. См. Спецификацию здесь.

Все символы Юникода могут быть помещены в кавычки, за исключением символов, которые должны быть экранированы: кавычка, обратный солидус и управляющие символы (U + 0000 через U + 001F).

  • 0
    Таким образом, проблема должна быть в том, как он потребляется, а не в том, как он генерируется?
  • 0
    @MiguelAngelMerinoVega Я не знаю, в чем проблема, но JSON генерируется правильно на сервере. Ваш клиент, вероятно, должен использовать анализатор JSON, который сделает преобразование правильно для вас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню