Reputation: 533
I'm trying to put JAXB annotations on POJO to produce following JSON (via moxy):
{
"apartmentNumber": "404",
"city/town": "SomeCity",
"state/province": "NoState",
"street": "1st Street"
}
Some fields contains slashes. When I'm trying to put annotation @XmlElement(name="city/town")
@XMLRootElement
public class SubscriberAddress {
private String street;
private String apartmentNumber;
@XMLElement(name="city/town")
private String city;
@XMLElement(name="state/province")
private String state;
}
moxy treats such names as XPaths and creates following JSON
{
"apartmentNumber" : "404",
"city" : {
"town" : "SomeCity"
},
"state" : {
"province" : "NoState"
},
"street" : "1st Street"
}
Is there any way to escape slash / forbid moxy to treat slashes in element names?
Upvotes: 6
Views: 471
Reputation: 77
Instead of moxy U may try GSON, as it is producing the result.
The POJO is :
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class SubscriberAddress {
private String street;
private String apartmentNumber;
@XmlElement(name = "city/town")
private String city;
@XmlElement(name = "state/province")
private String state;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getApartmentNumber() {
return apartmentNumber;
}
public void setApartmentNumber(String apartmentNumber) {
this.apartmentNumber = apartmentNumber;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
The JSON generated is :
{
"SubscriberAddress": {
"street": "Demo Street",
"apartmentNumber": "Demo Apartment",
"city/town": "Demo City",
"state/province": "Demo State"
}
}
Upvotes: 1