我有一个我编辑的基类,所以我不能添加jaxb注释。 在派生类中,我想序列化一些基类的属性。 我该怎么做呢?
答案 0 :(得分:0)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB 2 (JSR-222)专家组的成员。
如果您无法修改类以对其进行注释,那么您可能对 EclipseLink JAXB(MOXy)中的外部映射文档扩展感兴趣。
<强> oxm.xml 强>
下面是我在博客上的一个示例中指定的元数据的外部映射文档(JSON Binding with EclipseLink MOXy - Twitter Example)。
<?xml version="1.0"?>
<xml-bindings
xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
package-name="blog.json.twitter">
<java-types>
<java-type name="SearchResults" xml-accessor-type="FIELD">
<java-attributes>
<xml-element java-attribute="completedIn" name="completed_in"/>
</java-attributes>
</java-type>
<java-type name="Result" xml-accessor-type="FIELD">
<java-attributes>
<xml-element java-attribute="createdAt" name="created_at">
<xml-java-type-adapter value="blog.json.twitter.DateAdapter"/>
</xml-element>
<xml-element java-attribute="fromUser" name="from_user"/>
</java-attributes>
</java-type>
</java-types>
</xml-bindings>
<强>演示强>
使用外部映射文档引导JAXBContext的代码如下所示:
Map<String, Object> properties = new HashMap<String, Object>(1);
properties.put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY, "blog/json/twitter/oxm.xml");
JAXBContext jc = JAXBContext.newInstance(new Class[] {SearchResults.class}, properties);
了解更多信息
答案 1 :(得分:0)
这对我有用。在此MyClass中没有使用JAXB注释进行注释。 MyClass是一个典型的java bean类。
try {
JAXBContext jc = JAXBContext.newInstance(MyClass.class);
MyClass cl = new MyClass();
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(new JAXBElement<MyClass>(new QName("","MyClass"), MyClass.class, cl), System.out);
} catch (JAXBException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}