2017-01-24 10 views
1

После обновления с Jersey 1.19 до Jersey 2.25, мой ответ json изменяется.Изменение ответа Json после обновления до Json 2.25

У меня есть свойство, как показано ниже.

@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" 
     } 
    ] 
} 

My Jersey Config ниже

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

Jersey использует jackson для создания JSON и в jackson 2.x эта функция изменяется. Вы можете нашли более подробно here

Так что, если вы хотите иметь подобное поведение, то вам нужно настроить USE_WRAPPER_NAME_AS_PROPERTY_NAMEmapperFeature -

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

Теперь этот пользовательский объект картограф должен быть зарегистрирован в Jersey. Проверьте this для получения более подробной информации

 Смежные вопросы

  • Нет связанных вопросов^_^