【问题标题】:Jersey + Jackson - escaping body json string literalJersey + Jackson - 转义正文 json 字符串文字
【发布时间】:2017-07-06 20:23:05
【问题描述】:

我对简单的 Jaxrs (jersey) 端点有疑问:

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

每当我使用邮递员通过"test_string" 等简单有效负载对其进行测试时,Jackson 都会转义前导和尾随双引号。然后我在java中得到"\"test_string\""

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

我怎样才能告诉杰克逊接受我的文字?

【问题讨论】:

标签: java json jersey jackson jax-rs


【解决方案1】:

您将有两个选择:

1:创建自己的包装类并作为参数输入

public class TestMapper{
@JsonProperty
public String s;
}

2:没有杰克逊:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      相关资源
      最近更新 更多