2017-02-17 20 views
2

私は、単純なJaxrs(ジャージー)エンドポイントに問題があります。私は、単純なペイロードなど"test_string"でそれをテストするために郵便配達を使用するたびにジャージー+ジャクソン - 文字通り身体のJSON文字列をエスケープ

@POST 
@Consumes("application/json") 
@Produces("application/json") 
@Path("/test") 
public String doSomething(String s) { 
... 
} 

、ジャクソンは大手エスケープを二重引用符の末尾にあります。私は"\"test_string\""で終了します。

私が知る限り、"test_string"はjson文字列リテラルとして有効です。 test_string(二重引用符なし)を送信するだけで正常に動作します。しかし、私のクライアントは整形式のJson文字列( "test_string")を送信します

私のリテラルを受け入れるようにjacksonに指示するにはどうすればよいですか?

1:

答えて

0

あなたは2つのオプションがあります独自のラッパークラスを作成して置くことは、パラメータとして

public class TestMapper{ 
@JsonProperty 
public String s; 
} 

2:ジャクソンなし:私はと仮定しています

JSONObject jsonObj = new JSONObject(s); 
String result=(String) jsonObj.get("test_string"); 
0

あなたはジャージーを使って要求を自動マップするようにJerseyを設定していません。あなたが提供したコードでJSONを構文解析するためにObjectMapperを使用することはありません。要求はStringとして受信され、Jerseyは引用をエスケープして有効なJava Stringにします。これを避けるには、ObjectMapperを使用して文字列をString.classとして解析します。

関連する問題