新泽西+ - 杰克逊逃避身体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