使用XMLSerializer报错java.lang.NoClassDefFoundError: nu/xom/ParentNode
代码
package com.utils;
import net.sf.json.JSON;
import net.sf.json.xml.XMLSerializer;
public class Xml2JsonUtils {
private static ILogger log = LoggerFactory.getInstance().getLogger(Xml2JsonUtils.class);
public static void main(String[] args) {
String xmlString = "<Response>\r\n" +
" <UserID>张三</UserID>\r\n" +
" <UserName>张三</UserName>\r\n" +
" <Datetime>1516155816683</Datetime>\r\n" +
" <Content>\r\n" +
" <return>\r\n" +
" <retCode>0</retCode>\r\n" +
" <retMsg>success</retMsg>\r\n" +
" </return>\r\n" +
" </Content>\r\n" +
"</Response>";
System.out.println("xml to json 前 " + xmlString);
JSON resp = new XMLSerializer().read(xmlString);
String json = new XMLSerializer().read(xmlString).toString();
System.out.println("xml to json 后 " + json);
}
}
报错信息
Exception in thread "main" java.lang.NoClassDefFoundError: nu/xom/ParentNode
at com.handscape.Demo1.main(Demo1.java:33)
Caused by: java.lang.ClassNotFoundException: nu.xom.ParentNode
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
报错原因
后来终于在网上找到原因是因为缺少jar所致,引入xom的jar
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.2.5</version>
</dependency>
完整json-lib的maven dependency如下所示
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.2.5</version>
</dependency>
转换结果
xml to json 前
<Response>
<UserID>张三</UserID>
<UserName>张三</UserName>
<Datetime>1516155816683</Datetime>
<Content>
<return>
<retCode>0</retCode>
<retMsg>success</retMsg>
</return>
</Content>
</Response>
xml to json 后
{
"UserID": "张三",
"UserName": "张三",
"Datetime": "1516155816683",
"Content": [
{
"retCode": "0",
"retMsg": "success"
}
]
}