新泽西+ - 杰克逊逃避身体JSON字符串字面
问题描述:
我有一个简单的JAXRS(新泽西州)端点的一个问题:新泽西+ - 杰克逊逃避身体JSON字符串字面
@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”)
我如何告诉杰克逊接受我的文字?
答
你有两种选择:
1:创建您自己的包装类,并把作为参数
public class TestMapper{
@JsonProperty
public String s;
}
2:无杰克逊:
JSONObject jsonObj = new JSONObject(s);
String result=(String) jsonObj.get("test_string");
答
我假设您尚未将Jersey配置为使用Jackson自动映射请求,我没有看到您使用ObjectMapper
来解析您提供的代码中的JSON。该请求被接收为一个字符串,Jersey转义引用它使其成为一个有效的Java字符串。为避免这种情况,请使用ObjectMapper
将字符串解析为String.class
。