com.alibaba和org.json两种方式xml转json

第一种方式:

maven引入org.json包

pom.xml

<dependency>
	<groupId>org.json</groupId>
	<artifactId>json</artifactId>
	<version>20171018</version>
</dependency>

xml转json  java代码

public static void main(String[] args) {
		String result = "<applications>"
		+"<versions__delta>1</versions__delta>"
		+"<apps__hashcode></apps__hashcode>"
		+"</applications>";
		
		
	   //将xml转为json  
       JSONObject xmlJSONObj = XML.toJSONObject(result);  
       //设置缩进  
       String jsonPrettyPrintString = xmlJSONObj.toString(4);  
       //输出格式化后的json  
       System.out.println(jsonPrettyPrintString);
	       
}


第二种方式:

maven引入org.json包

pom.xml

<dependency>
	<groupId>dom4j</groupId>
	<artifactId>dom4j</artifactId>
	<version>1.6.1</version>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.1.41</version>
</dependency>

工具类
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class XmlTool {
	/**
     * String 转 org.dom4j.Document
     * @param xml
     * @return
     * @throws DocumentException
     */
    public static Document strToDocument(String xml){
        try {
        	//加上xml标签是为了获取最外层的标签,如果不需要可以去掉
			return DocumentHelper.parseText("<xml>"+xml+"</xml>");
		} catch (DocumentException e) {
			return null;
		}
    }

    /**
     * org.dom4j.Document 转  com.alibaba.fastjson.JSONObject
     * @param xml
     * @return
     * @throws DocumentException
     */
    public static JSONObject documentToJSONObject(String xml){
		return elementToJSONObject(strToDocument(xml).getRootElement());
    }

    /**
     * org.dom4j.Element 转  com.alibaba.fastjson.JSONObject
     * @param node
     * @return
     */
    public static JSONObject elementToJSONObject(Element node) {
        JSONObject result = new JSONObject();
        // 当前节点的名称、文本内容和属性
        List<Attribute> listAttr = node.attributes();// 当前节点的所有属性的list
        for (Attribute attr : listAttr) {// 遍历当前节点的所有属性
            result.put(attr.getName(), attr.getValue());
        }
        // 递归遍历当前节点所有的子节点
        List<Element> listElement = node.elements();// 所有一级子节点的list
        if (!listElement.isEmpty()) {
            for (Element e : listElement) {// 遍历所有一级子节点
                if (e.attributes().isEmpty() && e.elements().isEmpty()) // 判断一级节点是否有属性和子节点
                    result.put(e.getName(), e.getTextTrim());// 沒有则将当前节点作为上级节点的属性对待
                else {
                    if (!result.containsKey(e.getName())) // 判断父节点是否存在该一级节点名称的属性
                        result.put(e.getName(), new JSONArray());// 没有则创建
                    ((JSONArray) result.get(e.getName())).add(elementToJSONObject(e));// 将该一级节点放入该节点名称的属性对应的值中
                }
            }
        }
        return result;
    }
}

xml转json  java代码

public static void main(String[] args) {
		String result = "<applications>"
						+"<versions__delta>1</versions__delta>"
						+"<apps__hashcode></apps__hashcode>"
						+"</applications>";
	       
	   System.out.println(XmlTool.documentToJSONObject(result).toJSONString());
	       
	       
}



猜你喜欢

转载自blog.csdn.net/u011974797/article/details/80407564