我有一個非常簡單的問題就在這裏,但現在使用谷歌了一個多小時後,我仍然無法找到一個很好的解決方案,它開始花費太多的錢..編組與JAXB嵌套對象 - 解開
在我的應用程序中,我使用REST作爲API,基本上只使用JSON作爲有效內容類型,並闡明API的文檔。正如您可能知道的那樣,聲明將從類生成一個xsd模式。我因此處於這種情況,我需要使用合適的註釋配置所有DTO的Jackson/JSON處理,並且還需要使用JAXB註釋來確保生成的模式是正確的,並且可以使用XJC將其分析到正確的類中!
儘管在大多數情況下這並不是很難實現並且工作完美,但我有一個簡單但特殊的情況,它完全失敗了。
假設下面的類:
@JsonRootName(value = "location")
public class Location {
private String label;
@JsonUnwrapped
private Address address;
// constructors, getters, setters ommited..
}
//// new file
public class Address{
private String city;
private String street;
private String postCode;
}
這工作100%和Jackson/JSON。嵌入地址對象將被解開,以使JSON看起來像這樣:
{
"label":"blah",
"street":"Exchange Road",
"city":"Stacktown"
"postCode":"1337"
}
這工作來回傑克遜。另一方面,JAXB能夠解析(大部分)Jackson註釋,所以一般而言,在兩個世界中使用簡單對象都不會有問題。儘管JJSONB不支持@JsonUnwrapped,奇怪的是(從我的POV)很簡單的用例似乎根本不能反映任何JAXB註釋。
會發生什麼是生成的模式包含嵌入的地址對象,沒有任何屬性/元素。因此,由XJC生成的類將包含該地址對象引用。這最終會導致錯誤的JSON從應用程序,將使用架構來生成對象...
任何想法?
我知道....可悲的是字正腔圓依賴JAXB。無論如何,我只是接受了這個事實,即我現在在我的json中嵌套了Address對象。實際上並沒有太大的傷害。 – skombijohn