Я использую MOXy 2.6 (JAXB + JSON).Избегайте создания типа/значения обертки объекта в MOXy (JAXB + JSON)
Я хочу, чтобы ObjectElement и StringElement выполнялись одинаково, но MOXy создает объект-оболочку, когда поля вводятся как Object.
ObjectElement.java
public class ObjectElement {
public Object testVar = "testValue";
}
StringElement.java
public class StringElement {
public String testVar = "testValue";
}
Demo.java
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import org.eclipse.persistence.jaxb.JAXBContextFactory;
import org.eclipse.persistence.jaxb.MarshallerProperties;
import org.eclipse.persistence.oxm.MediaType;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContextFactory.createContext(new Class[] { ObjectElement.class, StringElement.class }, null);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, MediaType.APPLICATION_JSON);
System.out.println("ObjectElement:");
ObjectElement objectElement = new ObjectElement();
marshaller.marshal(objectElement, System.out);
System.out.println();
System.out.println("StringElement:");
StringElement stringElement = new StringElement();
marshaller.marshal(stringElement, System.out);
System.out.println();
}
}
При запуске Demo.java, вот выход ...
ObjectElement:
{"testVar":{"type":"string","value":"testValue"}}
StringElement:
{"testVar":"testValue"}
Как настроить Moxy/JAXB сделать ObjectElement визуализации как объект StringElement? Как избежать создания обертки объекта с помощью «type» и «value» Недвижимость?
Есть ли у вас какие-либо другое решение? Я желаю, чтобы он также работал с XML без создания атрибута, но значение должно быть текстовым содержимым testValue . –
Toilal
да это возможно. см. мой обновленный ответ, а также пример кода на github. –