第一中方法就是自己写转换类
先用SAXReader和Document得到xml格式的数据
@RequestMapping(value = "web_service_url", method = RequestMethod.GET) public String GetAllNotAcceptedCaseList(){ String webServiceUrl=GlobalUtils.getConfig("web_service_url"); //读取配置文件中配置的接口路径,也可直接写死 try { SAXReader reader = new SAXReader(); Document document = reader.read(new URL(webServiceUrl)); // //获取根节点 Element rootElement = document.getRootElement(); Object data =rootElement.getData(); JSONObject jsonObject = xmltoJson(data.toString()); //转成的json数据 System.out.println(jsonObject); } catch (Exception e) { e.printStackTrace(); } return ""; }
转换工具类
/** * 将xml转换为JSON对象 * @param xml xml字符串 * @return * @throws Exception */ public static JSONObject xmltoJson(String xml) throws Exception { JSONObject jsonObject = new JSONObject(); Document document = DocumentHelper.parseText(xml); //获取根节点元素对象 Element root = document.getRootElement(); iterateNodes(root, jsonObject); return jsonObject; } /** * 遍历元素 * @param node 元素 * @param json 将元素遍历完成之后放的JSON对象 */ @SuppressWarnings("unchecked") public static void iterateNodes(Element node,JSONObject json){ //获取当前元素的名称 String nodeName = node.getName(); //判断已遍历的JSON中是否已经有了该元素的名称 if(json.containsKey(nodeName)){ //该元素在同级下有多个 Object Object = json.get(nodeName); JSONArray array = null; if(Object instanceof JSONArray){ array = (JSONArray) Object; }else { array = new JSONArray(); array.add(Object); } //获取该元素下所有子元素 List<Element> listElement = node.elements(); if(listElement.isEmpty()){ //该元素无子元素,获取元素的值 String nodeValue = node.getTextTrim(); 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 = node.getTextTrim(); json.put(nodeName, nodeValue); return ; } //有子节点,新建一个JSONObject来存储该节点下子节点的值 JSONObject object = new JSONObject(); //遍历所有一级子节点 for(Element e:listElement){ //递归 iterateNodes(e,object); } json.put(nodeName, object); return ; }
第二种方法就是使用json-lib.jar的方式转换
//创建 XMLSerializer对象 XMLSerializer xmlSerializer = new XMLSerializer(); //将xml转为json(注:如果是元素的属性,会在json里的key前加一个@标识) String result = xmlSerializer.read(xml).toString(); //输出json内容 System.out.println(result);
测试类
public static void main(String[] args) { String xml = "<class id="+ "'1'"+ "><student><name>aaaaaa</name><age>21</age></student><student><name>bbbbbb</name><age>22</age></student></class>"; //创建 XMLSerializer对象 XMLSerializer xmlSerializer = new XMLSerializer(); //将xml转为json(注:如果是元素的属性,会在json里的key前加一个@标识) String result = xmlSerializer.read(xml).toString(); //输出json内容 System.out.println(result); }