2016-07-13 1 views
6

Je suis en train de mettre des annotations JAXB sur POJO pour produire JSON suivant (via Moxy):Convertir POJO à JSON avec slash dans le nom de domaine via Moxy

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

Certains champs contient des barres obliques. Quand je suis en train de mettre l'annotation @XmlElement (name = « ville/ville »)

@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 traite des noms tels que XPath et crée suivant JSON

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

est-il un moyen d'échapper à barre oblique/interdit à moxy de traiter les barres obliques dans les noms d'éléments?

+0

Je ne pouvais deviner, mais pourriez-vous essayer d'utiliser une barre oblique inverse? Par exemple: @XMLElement (name = "city \\/town") comme je me souviens quelque part dans la documentation JSON j'ai vu quelque chose de similaire. Si cela fonctionne, je l'afficherai comme réponse. :) – Mark

+0

Unortunatelly, cela ne fonctionne pas. Il crée simplement l'entité "ville" et la sous-ville "ville". J'ai aussi essayé d'échapper comme "ville // ville" et un peu plus. – stborod

+0

Et avez-vous essayé juste \ /? (Et pas \\ /?) –

Répondre

1

Au lieu de moxy U peut essayer GSON, car il produit le résultat.

Le POJO est:

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

Le JSON généré est:

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

J'ai déjà travaillé avec Jackson. La question portait sur la gestion des barres obliques dans le fournisseur de Moxy. – stborod