温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java中如何实现xml转为json

发布时间:2021-08-27 11:13:29 来源:亿速云 阅读:180 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关java中如何实现xml转为json,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

java xml转为json的两种方法

<?xml version="1.0" encoding="utf-8" ?> <auibinsurancecallback> <policyinfo> <transtype>TKTS</transtype> <eticketno>xxx</eticketno> <flightnumber>xxx</flightnumber> <flightdate>2019-10-16</flightdate> <operatetime>2019-10-16 17:20:00</operatetime> <insureno>1910161720056066735</insureno><agreeno>102160199</agreeno> <policyno> </policyno><policyurl> <!--[CDATA[]]--> </policyurl></policyinfo> <returninfo> <serialnumber>2019103015284949545354 </serialnumber> <retruncode>0</retruncode><errormessage> <!--[CDATA[xxx]]--> </errormessage> </returninfo> </auibinsurancecallback>";

先来看效果,效果一:

{   "auibinsurancecallback": {     "returninfo": [       {         "retruncode": [           "0"         ],         "serialnumber": [           "2019103015284949545354"         ]       }     ],     "policyinfo": [       {         "operatetime": [           "2019-10-16 17:20:00"         ],         "transtype": [           "TKTS"         ],         "flightdate": [           "2019-10-16"         ],         "insureno": [           "1910161720056066735"         ],         "flightnumber": [           "xxx"         ],         "agreeno": [           "102160199"         ],         "eticketno": [           "xxxx"         ]       }     ]   } }

效果二:

{   "auibinsurancecallback": {     "returninfo": {       "errormessage": "",       "retruncode": 0,       "serialnumber": 2.0191030152849496e+21     },     "policyinfo": {       "policyurl": "",       "operatetime": "2019-10-16 17:20:00",       "transtype": "TKTS",       "flightdate": "2019-10-16",       "insureno": 1910161720056066800,       "flightnumber": "xxx",       "agreeno": 102160199,       "policyno": "",       "eticketno": xxx     }   } }

从效果来看,明显是第二种方法,比第一种好。

下面把代码贴出出来

第一种实现:用到的包是fastjson, jdom2

public static JSONObject xml2JSON(byte[] xml) throws JDOMException, IOException {         JSONObject json = new JSONObject();         InputStream is = new ByteArrayInputStream(xml);         SAXBuilder sb = new SAXBuilder();         org.jdom2.Document doc = sb.build(is);         Element root = doc.getRootElement();         json.put(root.getName(), iterateElement(root));         return json;     }       private static JSONObject iterateElement(Element element) {         List node = element.getChildren();         Element et = null;         JSONObject obj = new JSONObject();         List list = null;         for (int i = 0; i < node.size(); i++) {             list = new LinkedList();             et = (Element) node.get(i);             if (et.getTextTrim().equals("")) {                 if (et.getChildren().size() == 0)                     continue;                 if (obj.containsKey(et.getName())) {                     list = (List) obj.get(et.getName());                 }                 list.add(iterateElement(et));                 obj.put(et.getName(), list);             } else {                 if (obj.containsKey(et.getName())) {                     list = (List) obj.get(et.getName());                 }                 list.add(et.getTextTrim());                 obj.put(et.getName(), list);             }         }         return obj;     }    @Test     public void xml1(){         String  xml = 上面贴的xml;           JSONObject json= null;         try {             json = xml2JSON(xml.getBytes());             System.out.println(json.toJSONString());         } catch (JDOMException e) {             e.printStackTrace();         } catch (IOException e) {             e.printStackTrace();         }       }

第二种实现:用的org.json包,

在用org.json包的时候,需要把spring-boot-starter-test中的,android-json排除,要不然会报错:

java.lang.NoSuchMethodError: org.json.JSONTokener.<init>(Ljava/io/Reader;)V

java.lang.NoSuchMethodError: org.json.JSONObject.put(Ljava/lang/String;Ljava/util/Collection;)

<dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>             <exclusions>                 <exclusion>                     <groupId>com.vaadin.external.google</groupId>                     <artifactId>android-json</artifactId>                 </exclusion>             </exclusions>         </dependency>

实现方法简单:

org.json.JSONObject xmlJSONObj = null;        try {            xmlJSONObj = XML.toJSONObject(xml);            log.debug("json:" + xmlJSONObj.toString() );        } catch (JSONException e) {            e.printStackTrace();        }

关于“java中如何实现xml转为json”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI