我有一个非常简单的问题就在这里,但现在使用谷歌了一个多小时后,我仍然无法找到一个很好的解决方案,它开始花费太多的钱..编组与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