У нас есть целый набор сервисов JAX-RS REST, работающих поверх Apache CXF и Jackson. Мы используем аннотации JAXB, чтобы заботиться о сортировке POJO для JSON, отлично работает.
Однако у нас есть одно или два места, где мы хотим вернуть необработанную строку JSON (которую мы извлекаем из кеша Redis).
Джексон всегда переносит строку в двойные кавычки и пропускает все двойные кавычки в ней, например.
@GET @Produces("application/json")
public Response getData() {
String json = ...get from Redis...
return Response.ok(json,"application/json").build()
}
дает нам
"{\"test\":1}"
вместо
{"test":1}
Я пробовал несколько вещей, добавляя RawSerializer (String.class) к объекту Mapper, ничего не работает. Единственное, что работает, - это установить тип носителя в обычную строку, которая обошла Джексона, но это не хорошо, поскольку я возвращаю неправильный тип содержимого
то есть.
return Response.ok(json,"text/plain").build()
работает, но плохо (неправильный тип контента, который закручивает приложения .Net WCF, которые нас называют)