簡體   English   中英

如何基於Accepts標頭不同地序列化POJO字段

[英]How to serialize POJO fields differently based on Accepts header

我們有一個POJO包含一個集合,並對其進行了注釋:

@XmlElement(name = "<MyId")
@XmlElementWrapper(name = "MyIds")
private final Set<Long> myIds;

我們正在CXF中使用JacksonJaxbJsonProvider進行REST服務中的編組。

我們看到的問題是,如果有人請求application / xml,則響應是正確的,因為用戶會得到:

<MyIds>
  <MyId>123</MyId>
  <MyId>456</MyId>
  ...
</MyIds>

但是,當請求application / json時,用戶會得到(請注意單數字段名稱):

{
  "MyId" : [123, 456, ...]
}

我想知道的是,是否有辦法在JSON響應中進行復數處理,如果有,如何進行。

感覺這可能是傑克遜(Jackson)的錯誤,但可能有一個很好的理由。 另外,我意識到,如果每個人都使用相同的POJO,則不必擔心編組文本的外觀,但是在這種情況下,其中一個使用者無法使用我們的POJO。

如果您使用的是Jackson的2.1版或更高版本,則可以啟用一項功能,以獲取所需的行為

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM