我正在尝试按照位于here的示例,但获取javax.xml.bind.PropertyException。由于以下代码行,我收到此异常:
marshaller.setProperty("eclipselink.media-type", "application/json");
我完全复制/粘贴了上面列出的示例,因此我的代码正是您在那里看到的。搜索SO和谷歌对此没什么帮助,并且我认为我会把这些带给SO的天才以获得一些帮助。任何帮助都是最受欢迎的,(de)使用JSON和XML与json.org,Jackson和JAXB进行序列化已经变成了一个消耗了近一个月生命的黑色和无底洞。
我的第一印象是我没有正确指定eclipselink运行时(as described here)但是没有产生解决方案。
堆栈跟踪:
Exception in thread "main" javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json
at org.eclipse.persistence.jaxb.JAXBMarshaller.setProperty(JAXBMarshaller.java:528)
at com.dualoutput.DualOutput.main(DualOutput.java:20)
答案 0 :(得分:4)
您需要确保使用EclipseLink 2.4.0或更高版本。当前版本是2.5.0,可以从(或从Maven Central获得)下载:
<强>更新强>
MOXy还提供以下便捷类来访问扩展属性:
org.eclipse.persistence.jaxb.JAXBContextProperties
org.eclipse.persistence.jaxb.MarshllerProperties
org.eclipse.persistence.jaxb.UnmarshallerProperties
这意味着您可以执行以下操作:
marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");