将xml数据转换为json对象
本⽂在上⽂的基础上(上⽂⽤的普通Java项⽬,实际项⽬中我⽤的是spring boot项⽬),讲解如何将xml数据转化为json对象!!话不多说,直接上代码!!
本节需要⽤到dom4j和fastjson jar包,下图是我引得版本
下边是我写的⼀个转换⼯具类,参数是String类型 xml数据,返回JSONObject
package com.uv.phenix.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.util.List;
/**
* Created by 于振坤 on ${DATA}.
*/
public class XmltoJsonUtil {
/**
* 将xml转换为json对象
*/
public static JSONObject xmlToJson(String xml) throws DocumentException {
JSONObject jsonObject = new JSONObject();
Document document = DocumentHelper.parseText(xml);
//获取根节点元素对象
Element root = RootElement();
iterateNodes(root, jsonObject);
return jsonObject;
}
/**
* 遍历元素
* @param node
* @param json
*/
private static void iterateNodes(Element node, JSONObject json) {
//获取当前元素名称
json转换对象String nodeName = Name();
//判断已遍历的JSON中是否已经有了该元素的名称
ainsKey(nodeName)){
/
/该元素在同级下有多个
Object Object = (nodeName);
JSONArray array = null;
if(Object instanceof JSONArray){
if(Object instanceof JSONArray){
array = (JSONArray) Object;
}else {
array = new JSONArray();
array.add(Object);
}
//获取该元素下所有⼦元素
List<Element> listElement = node.elements();
if(listElement.isEmpty()){
//该元素⽆⼦元素,获取元素的值
String nodeValue = TextTrim();
array.add(nodeValue);
json.put(nodeName, array);
return ;
}
//有⼦元素
JSONObject newJson = new JSONObject();
//遍历所有⼦元素
for(Element e:listElement){
//递归
iterateNodes(e,newJson);
}
array.add(newJson);
json.put(nodeName, array);
return ;
}
//该元素同级下第⼀次遍历
//获取该元素下所有⼦元素
List<Element> listElement = node.elements();
if(listElement.isEmpty()){
//该元素⽆⼦元素,获取元素的值
String nodeValue = TextTrim();
json.put(nodeName, nodeValue);
return ;
}
//有⼦节点,新建⼀个JSONObject来存储该节点下⼦节点的值
JSONObject object = new JSONObject();
for(Element e:listElement){
//递归
iterateNodes(e,object);
}
json.put(nodeName, object);
return ;
}
}
测试:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.dle.ResultVO;
import com.uv.phenix.util.XmltoJsonUtil;
import com.uv.phenix.xiruanWsdl.Service;
import com.uv.phenix.xiruanWsdl.XRHotelServiceSoap; import org.dom4j.DocumentException;
public class Main {
public static void main(String[] args) {
XRHotelServiceSoap soap = new Service().getBasicHttpBindingXRHotelServiceSoap();
String str = soap.queryGuest("I");
System.out.println(str);
try {
JSONObject object = lToJson(str);
System.out.println(object);
Object items = ("interface");
System.out.println(items);
ResultVO vo = JSON.String(), ResultVO.class);
System.out.println(vo);
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
这样就将xml数据转换为json对象,我在main⽅法中使⽤fastJson,最终获取到获取到的VO实体!!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。