升级到Json 2.25后,Json响应发生变化

时间:2017-01-24 06:40:11

标签: java json jersey jersey-2.0

从Jersey 1.19升级到Jersey 2.25后,我的json响应发生了变化。

我有一个属性如下。

 @XmlElementWrapper(name = "items")
 @XmlElement(name = "contact")
 public List<Contact> items = new ArrayList<Contact>();

在泽西岛1.19

JSON

{
    "items": [
        {
        "id": "510651"
        }
    ]
}

XML

<items>
    <contact>
        ..
        ..
    </contact>
</items>

升级到球衣2.25之后,xml看起来很好,但是Json存在问题。

Json升级后

{
  "contact": [
        {
          "id": "510651"
        }
    ]
}

我的泽西配置低于

 public JerseyConfig() {
    packages("my.api");
    property(ServerProperties.WADL_FEATURE_DISABLE, true);
    register(RequestContextFilter.class);
    register(JacksonFeature.class);
    register(CacheControlFilter.class);
    register(GZipEncoder.class);
    register(new LoggingFeature(Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME), Level.INFO,
        LoggingFeature.Verbosity.PAYLOAD_TEXT, 10 * 1024));
    register(new AbstractBinder() {
      @Override
      public void configure() {
        bindFactory(LocaleFactory.class).to(Locale.class).in(RequestScoped.class);
      }
    });
  }

1 个答案:

答案 0 :(得分:1)

Jersey使用jackson生成JSON,并在jackson 2.x中更改此功能。您可以找到更多详细信息here

因此,如果您想要有类似的行为,那么您需要配置USE_WRAPPER_NAME_AS_PROPERTY_NAME mapperFeature -

ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME, true);

现在,需要在Jersey中注册此自定义对象映射器。查看this了解详情