Jersey不能正确序列化对象

时间:2013-11-05 12:38:13

标签: jersey

我在将JSON序列化为Java对象时遇到了一些问题。我尝试从API检索对象,然后将其存储到Java对象中,但对象始终默认初始化值,而不是我从服务器请求的。我的客户端API调用如下所示:

JerseyClient client = new JerseyClientBuilder().build();

        JerseyWebTarget target = client.register(new JacksonFeature()).target("http://localhost:8080/service");
        private Citizien c = target.request(MediaType.APPLICATION_JSON_TYPE).get(Citizien.class);

        System.out.println("ECHO : " + c.toString());

我正在使用Jackson 1.9.11将JSON序列化为Java对象,并使用@XMLRootElements和@XMLElement变量来表示Citizien类。 Api只是插入一些随机数据并将对象返回给客户端。

有谁知道如何解决这个问题,因为我还不知道任何解决方案。

此致 Dahakka

1 个答案:

答案 0 :(得分:0)

确保拥有这些代码行

WebAppContext webAppContext = new WebAppContext();
webAppContext.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");

或者,如果您使用w / web.xml设置相应的配置项

<web-app>
  <servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.foo.bar</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
  </servlet>\
...