偶然间得知XStream这个框架,索性就写个小demo入门,没想到在解析json进行XStream初始化时,报错了。将报错信息及解决方案记录在此。
以下为xml序列化与反序列化
XStream xstream = new XStream(new StaxDriver());
AccessToken accessToken = new AccessToken(1, "99999999999999999999999999999");
// xml序列化
String s = xstream.toXML(accessToken);
System.out.println(s);
// xml反序列化
AccessToken a1 = (AccessToken)xstream.fromXML(s);
System.out.println(a1.getId());
System.out.println(a1.getToken());
以下为json序列化与反序列化
// 设置Json解析器
XStream xStream = new XStream(new JettisonMappedXmlDriver());
// 设置reference模型,不引用
xStream.setMode(XStream.NO_REFERENCES);
// 为类名节点重命名
xStream.alias("微信token",AccessToken.class);
String s1 = xStream.toXML(accessToken);
System.out.println(s1);
AccessToken o1 = (AccessToken) xStream.fromXML(s1);
System.out.println(o1.getToken());
重点是这步:XStream xStream = new XStream(new JettisonMappedXmlDriver());
报错信息为:java.lang.NoClassDefFoundError: org/codehaus/jettison/mapped/Configuration
原因是我少引入了依赖,一开始只引入了xstream:
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.11.1</version>
</dependency>
需要再引入jettison
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.7</version>
</dependency>
然后就可以解决了.