我试图使用JAXB& amp解组一些JSON。以下测试:
private static final String json = "{\"displayName\":\"2 KB\",\"externalId\":\"e1bc7db1-e7d5-41c9-8d2a-681f64ffea77\",\"contentType\":\"image/jpeg\",\"created\":\"2014-04-04T10:42:57\",\"lastModified\":\"2014-04-04T10:42:57\",\"originalFilename\":\"pgtips.jpg\",\"size\":\"2902\",\"tags\":\"\"}";
@Test
public void testDocStoreResponse() throws Exception {
JAXBContext context = JAXBContext.newInstance(JAXBFile.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
StringReader reader = new StringReader(json);
unmarshaller.unmarshal(reader);
}
JAXBFile是一个表示JSON的简单POJO:
@XmlRootElement
public class JAXBFile extends AbstractBean implements IFile {
private String originalFilename;
private Date created;
private Date lastModified;
private String tags = "";
private String contentType;
private long size;
// Un-annotated getters & setters follow
}
但无论何时我运行它,我都会得到一个堆栈跟踪:
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:578)
这曾经有效,所以我改变了一些东西,但我不知道是什么。有没有人对可能导致问题的原因有任何线索?通过对stacktrace中的类进行一些调试,看起来JSON正在被解析为它的XML,但我不确定为什么。依赖等似乎没问题。
答案 0 :(得分:0)
JAXB(JSR-222)用于解组XML而不是JSON。您当前正在使用JAXB参考实现(基于堆栈跟踪)。 EclipseLink JAXB(MOXy)支持JSON绑定。你之前使用过吗?