java xml转json
技术博客 http://idea.coderyj.com/文章来源:https://www.toymoban.com/news/detail-682977.html
最近在对接海康摄像头不支持json 返回的数据是xml尝试了各种方法,所以来总结一下
1.得到xml数据
<?xml version="1.0" encoding="UTF-8"?>
<TwoWayAudioChannelList version="2.0" xmlns="http://www.std-cgi.com/ver20/XMLSchema">
<TwoWayAudioChannel version="2.0" xmlns="http://www.std-cgi.com/ver20/XMLSchema">
<id>1</id>
<enabled>false</enabled>
<audioCompressionType>G.711ulaw</audioCompressionType>
<speakerVolume>100</speakerVolume>
<microphoneVolume>100</microphoneVolume>
<noisereduce>true</noisereduce>
<audioInputType>LineIn</audioInputType>
<audioOutputType>Speaker</audioOutputType>
</TwoWayAudioChannel>
</TwoWayAudioChannelList>
2.java 将xml转json
- 依赖包
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
- 上代码
public class CommonUtils {
// xml 转换为json
public static JSONObject xmlToJSON(String xmlString) {
try {
// 1、读取文件并转换为Document文档对象
Document doc = new SAXReader().read(new ByteArrayInputStream(xmlString.getBytes("UTF-8")));
//2、使用asXML()方法将DOM文档对象转换为字符串
String s = doc.asXML();
//3、调用自定义的方法转换为JSON数据格式
JSONObject jsonObject = startXMLToJSON(s);
//4、输出结果
// System.out.println(jsonObject);
return jsonObject;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 自定义*/
public static JSONObject startXMLToJSON(String xml){
//1、定义JSON对象保存结果
JSONObject result = new JSONObject();
try {
//2、使用DocumentHelper.parseText()转换为DOM文档对象
Document document = DocumentHelper.parseText(xml);
//3、获取DOM文档根节点
Element rootElement = ((Document) document).getRootElement();
//4、调用自定义的方法转换为JSON数据格式
parseJson(rootElement,result);
} catch (DocumentException e) {
e.printStackTrace();
}
return result;
}
public static void parseJson(Element element,JSONObject result){
//1、获取子节点列表
List<Element> elements = element.elements();
//2、循环子节点列表获取数据
for (Element e:elements) {
//3、有数据则获取
if (!e.elements().isEmpty() && !e.getText().isEmpty()){
//4、定义另一个JSON对象保存子节点JSON数据
JSONObject cjson = new JSONObject();
//5、此处调用自身继续方法继续循环取值,知道遍历完所有字节点数据
parseJson(e,cjson);
if (!cjson.isEmpty()){
//6、添加到JSON对象
result.put(e.getName(),cjson);
}
}else {
if (!e.getText().isEmpty()){
//6、添加到JSON对象
result.put(e.getName(),e.getText());
}
}
}
}
}
ps
new ByteArrayInputStream(xmlString.getBytes("UTF-8"))
一定要先转换为utf8
才可以不然会直接失败文章来源地址https://www.toymoban.com/news/detail-682977.html
到了这里,关于java xml转json的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!