使用eclipselink.media-type值设置Marshaller属性时的PropertyException:application / json

时间:2013-08-28 21:35:11

标签: java jaxb eclipselink marshalling moxy

我正在尝试按照位于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)

SSCCE

1 个答案:

答案 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");
相关问题