2015-04-06 11 views
7

Sono alle prese con il modo in cui Moxy gestisce l'ereditarietà degli oggetti.Rinominare "type" dall'output moxy JSON

In particolare, ho bisogno di rinominare l'elemento predefinito type che Moxy aggiunge in caso di sottotipi in quanto mi impedisce di avere il mio campo type nei miei oggetti.

Questa domanda si riferisce allo Remove "type" from JSON output jersey moxy ma sfortunatamente non risponde alla mia domanda.

Ho tentato di includere @XmlDiscriminatorNode nella mia classe astratta che non sembrava fare alcuna differenza nel risultato.

Ho anche provato a rimuovere completamente l'elemento predefinito moxy type ma senza esito positivo.

+0

controllare http://stackoverflow.com/questions/13831189/xmldiscriminatornode-xmldescriminatorvalue-not-working-on-weblogic-server/13838091#13838091 –

+0

Sembra che Blaise sia in grado di rinominarlo attributo 'classifier' per XML, quindi cercherò di ricominciare usando il suo esempio dal suo blog http://blog.bdoughan.com/2010/11/jaxb-and-inheritance-moxy-extension.html. Grazie! –

risposta

3

C'è stato un cambiamento nella gestione della proprietà type in MOXy 2.6. A partire da MOXy 2.6, la proprietà type è predefinita come prefisso xsi (o qualsiasi prefisso definito dall'utente). Significa che non dovrebbe esserci alcun conflitto di proprietà di tipo in MOXy a partire dalla versione 2.6.

dettagli possono essere trovati a https://wiki.eclipse.org/EclipseLink/DesignDocs/459464

prefisso dello spazio dei nomi deve essere specificato come JAXBContext proprietà:

unmarshaller.setProperty (JAXBContextProperties.MEDIA_TYPE, MediaType.APPLICATION_JSON); Spazi dei nomi delle mappe = nuova HashMap <>(); namespaces.put (javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "xsi"); unmarshaller.setProperty (JAXBContextProperties.NAMESPACE_PREFIX_MAPPER, namespace);

+0

Con il mapper dei prefissi dello spazio dei nomi aggiunto, MOXy inizia a mettere spazi dei nomi ovunque, che è qualcosa che i nostri client Javascript non accettano. Vedrò cosa posso fare per eliminare un uso dei namespace ad eccezione dello spazio dei nomi 'XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI' ... –

+0

A proposito, è supportato per rinominare il' tipo' usando '@ XmlCustomizer' con un' DescriptorCustomizer 'dove si può chiamare' ClassDescriptor.getInheritancePolicy(). setClassIndicatorFieldName ("@ moxy-type") '? Quando provo a farlo, MOXy perde la sua capacità di JSON unmarshal (sembra un bug per me). –

+0

La rimozione di spazi dei nomi non necessari dovrebbe risolvere il problema. So che in alcuni casi potrebbe essere davvero fastidioso. –

Problemi correlati