У меня есть конечная точка Spring, которая должна возвращать JSON, чтобы ее можно было свернуть / развернуть через Chrome. Есть ли способ сообщить Spring, что строка в сообщении является фактическим представлением Json, и нет необходимости экранировать двойные кавычки
Объявление конечной точки:
@GET
@Path("/validate/{id}")
@Produces("application/json")
Response validate(@Context HttpServletRequest request, @PathParam("id") String id);
Реализация конечной точки:
public Response validate(HttpServletRequest request, String id) {
try {
return validatorService.validate(request, String id);
} catch(Exception e) {
throw new MyCustomException(e);
}
}
Обработчик исключений:
public class ExceptionHandler implements ExceptionMapper {
@Override
public Response toResponse(MyCustomException exception) {
String json = buildJsonResponse(exception);
Message message = new Message(json);
return Response.status(ERROR_HTTP_STATUS_CODE).entity(response).build();
}
}
public class Message {
String json;
public Message(String json) {
this.json = json;
}
public String getJson() {
return json;
}
}
Ответ:
"json": "{ \"key\": \"value\" }"
Ожидаемый ответ:
"json": { "key": "value" }
Решение:
private JsonNode convertToJson(String json) {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readTree(json);
} catch (IOException e) {
return NullNode.getInstance();
}
}