泽西+杰克逊 - 逃脱身体json字符串文字

时间:2017-02-17 10:37:51

标签: java json jersey jackson jax-rs

我遇到一个简单的Jaxrs(泽西)终点问题:

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

每当我使用邮递员用简单的有效载荷(如"test_string")对其进行测试时,杰克逊就会跳过前导和尾随双引号。然后我在java中以"\"test_string\""结束。

据我所知,"test_string"作为json字符串文字有效。如果我发送test_string(没有双引号),它可以正常工作。但是,我的客户端发送格式良好的Json字符串(“test_string”)

我如何告诉杰克逊接受我的文字?

2 个答案:

答案 0 :(得分:0)

您有两种选择:

1:创建自己的包装器类并将其作为参数

public class TestMapper{
@JsonProperty
public String s;
}

2:没有杰克逊:

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

答案 1 :(得分:0)

我假设您没有将Jersey配置为使用Jackson自动映射请求,我没有看到您使用ObjectMapper来解析您提供的代码中的JSON。该请求被收到一个String并且Jersey转义引号以使其成为有效的Java String。为避免这种情况,请使用ObjectMapper将字符串解析为String.class