Как передать необработанный JSON через Джексона?

У нас есть целый набор служб 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) в средство сопоставления объектов, ничего не работает. Единственное, что сработает, это если я установлю тип мультимедиа на простую строку, что обошло Джексона, но это нехорошо, так как я возвращаю неправильный тип контента

, т.е.

return Response.ok(json,"text/plain").build() 

работает, но плохо (неправильный тип контента, который облажались приложения .Net WCF, которые звонят нам)

13
задан Jacek Furmankiewicz 17 May 2012 в 20:43
поделиться