2016-07-13 13 views
6

Ich versuche JAXB Annotationen auf POJO zu setzen folgende JSON (via moxy) zu erzeugen:Convert POJO zu JSON mit Schrägstrich in Feldnamen über moxy

{ 
    "apartmentNumber": "404", 
    "city/town": "SomeCity", 
    "state/province": "NoState", 
    "street": "1st Street" 
} 

Einige Felder enthält Schrägstriche. Wenn ich versuche, Anmerkung @XmlElement (name = „Stadt/Ort“)

@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 behandelt Namen wie XPaths zu setzen und JSON folgende schafft

{ 
    "apartmentNumber" : "404", 
    "city" : { 
     "town" : "SomeCity" 
    }, 
    "state" : { 
     "province" : "NoState" 
    }, 
    "street" : "1st Street" 
} 

Gibt es eine Möglichkeit Strich zu entkommen/verbiete moxy, um Schrägstriche in Elementnamen zu behandeln?

+0

ich nur raten konnte, aber könnten Sie versuchen, einen Backslash zu benutzen? ZB: @XMLElement (name = "city \\/town") wie ich mich erinnere irgendwo in JSON Dokumentation sah ich etwas ähnliches. Wenn es funktioniert, poste ich es als Antwort. :) – Mark

+0

Unglücklicherweise funktioniert es nicht. Es erstellt nur die Entität "Stadt" und die Untertität "Stadt". Ich versuchte auch zu entkommen wie "Stadt // Stadt" und noch etwas mehr. – stborod

+0

Und hast du es nur probiert \ /? (Und nicht \\ /?) –

Antwort

1

Statt Moxy U versuchen GSON, wie es das Ergebnis produziert.

Die POJO ist:

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; 
    } 
} 

Die JSON erzeugt ist:

{ 
    "SubscriberAddress": { 
    "street": "Demo Street", 
    "apartmentNumber": "Demo Apartment", 
    "city/town": "Demo City", 
    "state/province": "Demo State" 
    } 
} 
+1

Ich habe bereits mit Jackson gearbeitet. Die Frage bezog sich auf die Handhabung von Schrägstrichen im Moxy-Provider. – stborod