免责声明:我非常业余
我正在尝试让我正在处理的项目除了 XML 之外还输出 JSON。最初,这样做的方法涉及一个方法,该方法接受 Element 的参数并将事物递归地插入到 net.sf JSONObject 类型的对象中以创建 JSON 输出,并使用普通JAXBContext
的 'sMarshaller
编组为 XML。
我想要的是使用 MOXy 作为我的 JAXB 提供程序,然后从绑定中编组出 XML 和 JSON。
最初,当 XML 被编组时,我有:
jc = JAXBContext.newInstance("packageA:packageB:packageC...etc.");
public static String marshal(JAXBContext context, JAXBElement<?> je) throws JAXBException {
StringWriter sout = new StringWriter();
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
m.marshal(je, sout);
return sout.toString();
}
进而
JAXBElement<myObject> jaxb =
new JAXBElement<myObject>(myObject_QNAME, myObject.class, null, value);
return XmlResponseMessage(marshal(jc, jaxb));
}
(这可能很重要,所以我应该提到我正在开发的应用程序使用了 spring 框架。)
另外,我已经阅读了 Blaise 关于 EclipseLink 的每一篇博文。有的多次。我只是对它的理解非常肤浅,如果您不将我链接到他的一个页面,而是解释它的任何解决方案及其工作原理,我将不胜感激
话虽如此,我尝试将jaxb.properties
文件包含在其中一个包中以尝试获取 MOXy,而不是JAXBElement
获取我的绑定。但是,JAXBContext.newInstance("my list of : delimited packages")
只会使程序挂起。甚至没有错误,只是挂起它。单步执行只是显示对 EclipseLinknewInstance
方法的调用挂起。我已经在网上寻找了很多小时的解决方案。我有太多的类只能包含在 Class[] 中,因此无法通过使用类数组来设置属性。这也是我不能使用本机 moxy API 而不是使用属性文件的原因。我想我已经正确设置了 EclipseLink:我已经设置eclipselink_home
了我的环境变量,并将 eclipselink.jar 添加到我的构建路径中。