2012-02-29 54 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

相關問題