MOXy DynamicEntity с JSON?

Я пытаюсь использовать DynamicEntity, чтобы разобрать какой-нибудь простой JSON, и это меня совершенно не устраивает. Документов довольно мало, возможно ли это сделать? Я в основном делаю это;

JAXBContext jaxbContext = JAXBContext.newInstance(DynamicEntity.class);
DynamicEntity entity = (DynamicEntity) jaxbContext.createUnmarshaller().unmarshal(entityStream);

Это прямо из документов XML здесь: https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/XmlToDynamicEntity

И я получаю; Вызванный:

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
org.eclipse.persistence.dynamic.DynamicEntity is an interface, and JAXB can't handle interfaces.
    this problem is related to the following location:
        at org.eclipse.persistence.dynamic.DynamicEntity

Кому-нибудь удалось заставить это работать? Я в основном пытаюсь избежать создания POJO, так как мой внутренний магазин все равно не заботится о них, я просто хочу десериализовать общий объект и передать его. В .NET я бы просто использовал dynamic, но я совершенно не понимаю, как это сделать с Moxy.


person XeroxDucati    schedule 21.01.2016    source источник


Ответы (1)


Чтобы получить DynamicEntity, необходимо использовать DynamicJAXBContext. Его можно настроить с помощью следующего в файле jaxb.properties:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory

или вы можете использовать DynamicJAXBContextFactory напрямую.

Хотя Dynamic MOXY не требует каких-либо классов Java для привязок (POJO), вам необходимо предоставить метаданные привязки при создании контекста. Это может быть XSD или binding.xml, описывающий сопоставление. Поэтому вместо создания контекста с помощью JAXBContext.newInstance(DynamicEntity.class) вам нужно будет использовать альтернативные методы — см. ссылки ниже.

См. пример здесь (с использованием XSD): https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/JAXBContextFromXMLSchema

или более сложный пример с использованием binding.xml, а также JSON: https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/Flickr

person ondrc    schedule 22.01.2016