У меня есть структура ниже.Как сгенерировать JSON и XML из тех же классов сущностей?
@XmlSeeAlso({Phone.class, Address.class})
abstract class ContactInfo {
}
@XmlRootElement(name="address")
class Address extends ContactInfo {
private String street;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
@XmlRootElement(name="phone")
class Phone extends ContactInfo {
private String mobile;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
class Contact {
private ContactInfo contact;
@XmlElementRef
public ContactInfo getContact() {
return contact;
}
public void setContact(ContactInfo contact) {
this.contact = contact;
}
}
@XmlRootElement(name="user")
class User {
private String name;
private Contact contact;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Contact getContact() {
return contact;
}
public void setContact(Contact contact) {
this.contact = contact;
}
}
Когда я преобразовываю это в XML с помощью JAXB, я получаю нижнюю структуру.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<contact>
<phone>
<mobile>8971829749</mobile>
</phone>
</contact>
<name>Halley</name>
</user>
Где мой JSON выглядит несколько иначе.
{
"User" : {
"name" : "Halley",
"contact" : {
"contact" : {
"mobile" : "8971829749"
}
}
}
}
Пользователь root-пользователя и телефон совсем не присутствуют в моей структуре JSON.
Хотя JAXB чтит аннотацию XMLRootElement, Джексон - нет. Любая идея, почему и как я могу это исправить?
Мне нужно сгенерировать JSON и XML из тех же классов сущностей.
Можно ли это сделать без дополнительной собственности? Скажем, я хочу иметь другое имя тега для моих разных подклассов. – Halley