2017-01-24 8 views
1

Jersey 1.19からJersey 2.25へのアップグレード後、私のjson応答が変更されます。Jsonへのアップグレード後のJson応答の変化2.25

私は以下のプロパティを持っています。

ジャージー1.19で
@XmlElementWrapper(name = "items") 
@XmlElement(name = "contact") 
public List<Contact> items = new ArrayList<Contact>(); 

JSON

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

のXml

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

ジャージー2.25にアップグレードした後、XMLは、罰金のようですが、JSONの場合には問題があります。

JSONアップグレード

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

後、マイジャージー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

JerseyJSONを生成するためのjacksonを使用し、jackson 2.xでこの機能が変更され下回っています。このカスタムオブジェクトマッパーはJerseyに登録する必要があります

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

今、 - あなたはとても詳しくhere

を見つけたことができますが、同様の動作をしたい場合、あなたはUSE_WRAPPER_NAME_AS_PROPERTY_NAMEmapperFeatureを設定する必要があります。詳細についてはthisをご確認ください