杰克逊为什么要将数字字段序列化为字符串?

时间:2012-02-29 16:59:17

标签: java jersey jackson

我有以下Jersey资源,Jersey已配置为使用Jackson进行自动JSON-POJO转换:

@Path("/test")
public class TestResource {
    @POST
    @Consumes({ MediaType.APPLICATION_JSON })
    @Produces({ MediaType.APPLICATION_JSON })
    public TestResponse testGet(final TestRequest req) {
        final TestResponse response = new TestResponse();
        response.x = req.x + 1;
        return response;
    }

    @XmlRootElement
    public static class TestRequest {
        public int x;
    }

    @XmlRootElement
    public static class TestResponse {
        public int x;
    }
}

我称之为:

{"x":5}

得到答复:

{"x":"6"}

但是当TestResponse中的x字段是int时,为什么这里的值是一个字符串?

2 个答案:

答案 0 :(得分:0)

正如前面的例子中所提到的,配置Jersey绝对可以为您提供所期望的行为。然而,实际上看起来泽西岛使用的是默认的MAPPING符号而根本没有使用Jackson。我会回顾一下如何将Jackson配置到您的Web应用程序中。我配置Jackson的最简单方法是创建以下两个文件......

  • META-INF /服务/ javax.ws.rs.ext.MessageBodyReader
  • META-INF /服务/ javax.ws.rs.ext.MessageBodyWriter

这两个文件只包含以下文字......

org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider

Here is a link explaining the two ways to configure Jackson to work with JAX-RS annotations

答案 1 :(得分:-1)