2012-02-29 49 views
3

我有以下的球衣资源,新泽西州已经配置为使用杰克逊自动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?

+0

一切都被默认序列化到字符串。我不知道为什么这是客户的问题。 – smk 2012-02-29 17:21:33

+1

嗯,奇怪 - 我怎样才能改变这种行为? – sanity 2012-02-29 18:27:52

+0

你解决这个问题? – 2015-10-08 14:08:08

回答

0

正如前面的例子中所提到的,这是绝对可以配置泽西岛为您提供您所期望的行为。然而,它实际上看起来像新泽西使用默认映射符号,而不是使用杰克逊的。我会回顾一下如何将杰克逊配置到您的Web应用程序中。对我来说,配置杰克逊最简单的方法是创建以下两个文件...

  • 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

+0

你怎么知道它使用默认的映射表示法? – 2015-10-08 14:07:49

相关问题