Двойное экранирование в ответе от контроллера
В контроллер приходит сущность с неразрывным пробелом. Он его дополнительно экранирует.
@RestController
@RequestMapping("/abc/")
class Controller(
private val service: service
) {
@GetMapping("/byId/{id}", produces = [MediaType.APPLICATION_JSON_VALUE])
suspend fun getEntity(
@PathVariable id: Long,
) : EntityResponse {
val entity = service.getEntity(id)
println(entity)
return entity
}
}
В println вижу, что неразрывный пробел не экранируется.
Получаю:
EntityResponse(statusCode=200, id=2, test=Текст с\u00A0неразрывным пробелом)
При этом в insomnia вижу такой ответ:
{
"statusCode": 200,
"id": 2,
"test": "Текст с\\\u00A0неразрывным пробелом",
}
По данному вопросу я находил решения для python, либо для решения проблем в парсинге url. Мне это не подходит.
Прошу помочь в решении.
Ответы (1 шт):
Автор решения: TaranenkoAnt
→ Ссылка
В JSON сериализации символ неразрывного пробела экранируется, в отличии от println, можно попробовать что-то вроде:
@GetMapping("/byId/{id}", produces = [MediaType.APPLICATION_JSON_VALUE])
suspend fun
getEntity(@PathVariable id: Long):
EntityResponse {
val entity = service.getEntity(id)
// Заменяем неразрывной пробел на экранированное представление
entity.test = entity.test.replace('\u00A0', '\\u00A0')
println(entity)
return entity
}