Apache CXF と Jackson の上で実行される一連の JAX-RS REST サービスがあります。JAXB アノテーションを使用して、POJO を JSON にマーシャリングします。うまく機能します。
ただし、生の JSON 文字列 (Redis キャッシュからフェッチする) を返したい場所が 1 つか 2 つあります。
Jackson は常に文字列を二重引用符で囲み、その中のすべての二重引用符をエスケープします。
@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) を追加して、複数のことを試しましたが、何も機能しません。機能する唯一のことは、メディアタイプをJacksonをバイパスするプレーンストリングに設定した場合ですが、間違ったコンテンツタイプを返すため、良くありません
すなわち
return Response.ok(json,"text/plain").build()
動作しますが、不十分です (間違ったコンテンツ タイプ、私たちを呼び出す .Net WCF アプリを台無しにします)