1
我试图解组使用JAXB &以下测试一些JSON:“的内容是不是在序言中不允许”解组时使用JSON JAXB
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)
这曾经是工作,所以我改变了一些东西,但我不知道是什么。有没有人有任何线索可能会导致问题?从调试堆栈跟踪中的类来看,似乎JSON正在被解析,就好像它是XML一样,但我不确定原因。依赖性等似乎没有问题。
这里的地方我知道我不太知道的地步!从来不是一件好事。我猜测一定有一个我没有意识到的传递Maven依赖。我知道我在那里有Jackson支持JAXB注释,但那不是JAXB实现(我从来没有把它称为ObjectMapper类)。我会特别试着把Moxy放在那里,并给它一个提供。 –