通过moxy将字段名称中的斜杠转换为POJO为JSON

stb*_*rod 6 java json jaxb moxy

我正在尝试将JAXB注释放在POJO上以生成以下JSON(通过moxy):

{
    "apartmentNumber": "404",
    "city/town": "SomeCity",
    "state/province": "NoState",
    "street": "1st Street"
}
Run Code Online (Sandbox Code Playgroud)

某些字段包含斜杠.当我试图把注释@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;
}
Run Code Online (Sandbox Code Playgroud)

moxy将这些名称视为XPath并创建以下JSON

{
     "apartmentNumber" : "404",
     "city" : {
         "town" : "SomeCity"
     },
     "state" : {
         "province" : "NoState"
     },
     "street" : "1st Street"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法逃避斜线/禁止moxy处理元素名称中的斜杠?

Rou*_*mar 1

U 可以尝试 GSON,而不是 moxy,因为它正在产生结果。

POJO 是:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

生成的 JSON 是:

{
  "SubscriberAddress": {
    "street": "Demo Street",
    "apartmentNumber": "Demo Apartment",
    "city/town": "Demo City",
    "state/province": "Demo State"
  }
}
Run Code Online (Sandbox Code Playgroud)