Ger*_*ári 6 java jaxb eclipselink moxy
我按照这个例子:http://wiki.eclipse.org/EclipseLink/Examples/MOXy/JSON_Twitter
现在我有这个课:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;
import org.eclipse.persistence.jaxb.MarshallerProperties;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Foo.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
unmarshaller.setProperty("eclipselink.media-type", "application/json");
unmarshaller.setProperty("eclipselink.json.include-root", false);
StreamSource source = new StreamSource("http://test.url/path/to/resource");
JAXBElement<Foo> jaxbElement = unmarshaller.unmarshal(source, Foo.class);
System.out.println(jaxbElement.getValue().getFoo());
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");
marshaller.setProperty("eclipselink.json.include-root", false);
marshaller.marshal(jaxbElement, System.out);
}
}
Run Code Online (Sandbox Code Playgroud)
我有jaxb.properties:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码,我得到:
Exception in thread "main" javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.setProperty(AbstractUnmarshallerImpl.java:352)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.setProperty(UnmarshallerImpl.java:450)
at com.example.JavaSEClient.main(JavaSEClient.java:19)
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我搜索了SO和Google,这些答案都不起作用:
使用eclipselink.media-type值设置Marshaller属性时的PropertyException:application/json JAXB javax.xml.bind.PropertyException
您需要确保您的jaxb.properties文件与用于引导它的域类位于同一个包中JAXBContext,并且EclipseLink MOXy位于类路径上.
如果您使用的是Maven,则该jaxb.properties文件应位于以下位置,假设Foo位于名为的包中com.example.Foo:
有关完整示例,请参阅:
| 归档时间: |
|
| 查看次数: |
12051 次 |
| 最近记录: |