4

ここにある例に従おうとしていますが、javax.xml.bind.PropertyException が発生します。次のコード行が原因で、この例外が発生します。

marshaller.setProperty("eclipselink.media-type", "application/json");

上記の例を文字通りコピーして貼り付けたので、私のコードはまさにそこにあるものです。SO と Google でこれを検索しても役に立たなかったので、これを SO の天才に助けてもらいたいと思いました。json.org、Jackson、および JAXB を使用した JSON および XML を使用した (デ) シリアル化は、私の人生のほぼ 1 か月を費やした底なしの穴になりました。

私の最初の印象は、eclipselink ランタイムを適切に指定していない(ここで説明されているように)ということでしたが、それでは解決策が得られませんでした。

スタックトレース:

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

4

1 に答える 1

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");
于 2013-08-28T23:43:37.760 に答える