1. 程式人生 > >xml轉為json,並解析json

xml轉為json,並解析json

開篇:一般公司的專案,很多是返回xml報文,如何將xml解析為json,這裡採用一種方法,sax解析方式

一.maven 依賴

<dependency>
    <groupId>org.jdom</groupId>
   <artifactId>jdom2</artifactId>
   <version>2.0.6</version>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>
fastjson</artifactId> <version>1.2.46</version> </dependency>

二.程式碼如下

public class TestXml2Json {
    public static void main(String[] args) throws JDOMException, IOException {
        String xml="<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
                "<MoBaoAccount MessageType=
\"UserMobilePay\" PlatformID=\"b2ctest\">" + "<OrderNo>M20150521084825</OrderNo>" + "<TradeAmt>5000.00</TradeAmt>" + "<Commission>0.5</Commission>" + "<UserID>zhangbingfa</UserID>" + "<MerchID>zhangbingfa</MerchID>"
+ "<tradeType>0</tradeType>" + "<CustParam>123</CustParam> " + "</MoBaoAccount>"; //解析xml文件 JSONObject json=xml2Json(xml.getBytes()); //解析json資料 JSONObject moBaoAccount = (JSONObject) json.get("MoBaoAccount"); List commission = (List) moBaoAccount.get("Commission"); Order order = new Order(); //封裝為自定義物件 order.setCommission((String) commission.get(0)); System.out.println(order.getOrderNo()+">>>>>>>>>"+order.getCommission()+">>>>>>>"+order.getTradeAmt()); System.out.println(json.toJSONString()); } public static JSONObject xml2Json(byte[] xml) throws JDOMException, IOException { JSONObject jsonObject = new JSONObject(); //將字串轉換為輸入流 InputStream is = new ByteArrayInputStream(xml); //用sax解析,解析一行丟一行 SAXBuilder saxBuilder = new SAXBuilder(); //獲得xml文件 Document document = saxBuilder.build(is); //獲得根元素,例如xml Element rootElement = document.getRootElement(); //呼叫具體解析方法 jsonObject.put(rootElement.getName(),iterateElement(rootElement)); return jsonObject; } private static JSONObject iterateElement(Element rootElement) { //獲得所有子元素的集合 List note = rootElement.getChildren(); Element et; JSONObject jsonObject = new JSONObject(); List list; for(int i=0;i<note.size();i++){ list = new LinkedList(); et = (Element) note.get(i); //此處是從>解析到<,如果有巢狀的子節點,則遞迴遍歷 if(et.getTextTrim().equals("")){ if(et.getChildren().size() == 0) continue; //有這個鍵,則用最新的值替換 if(jsonObject.containsKey(et.getName())){ list = (List)jsonObject.get(et.getName()); } list.add(iterateElement(et)); jsonObject.put(et.getName(),list); }else{ if(jsonObject.containsKey(et.getName())){ list = (List)jsonObject.get(et.getName()); } //獲得值,例如<a>1</a>,得到1 list.add(et.getTextTrim()); jsonObject.put(et.getName(),list); } } return jsonObject; } } class Order{ private String OrderNo; private String TradeAmt; private String Commission; public String getOrderNo() { return OrderNo; } public void setOrderNo(String orderNo) { OrderNo = orderNo; } public String getTradeAmt() { return TradeAmt; } public void setTradeAmt(String tradeAmt) { TradeAmt = tradeAmt; } public String getCommission() { return Commission; } public void setCommission(String commission) { Commission = commission; } }

三,結果如下

{
"MoBaoAccount": {
"MerchID": ["zhangbingfa"],
"UserID": ["zhangbingfa"],
"Commission": ["0.5"],
"OrderNo": ["M2015052198456"],
"TradeAmt": ["5000.00"],
"CustParam": ["321"],
"tradeType": ["0"]
}

}

相關推薦

xml轉為json解析json

開篇:一般公司的專案,很多是返回xml報文,如何將xml解析為json,這裡採用一種方法,sax解析方式一.maven 依賴<dependency> <groupId>org.jdom</groupId> <artifa

遍歷win10文件夾解析json文件按照json格式存入mongo數據庫(基於python 3.6)

dep IT os.path efault gpo dir ren ica not import reimport jsonfrom pymongo import MongoClientimport os# def Write_json(data):# open_J

生成簽名隨機字串XML轉為陣列陣列轉XMLjson封裝獲取IP地址

/* * ******生成簽名********* */private function getSign($params){ ksort($params); //將引數陣列按照引數名ASCII碼從小到大排序 foreach ($params as $key => $item) {

Android手機號碼歸屬地的查詢(使用聚合資料API獲取JSON資料解析

一個簡單的Demo,從聚合資料申請手機號碼歸屬地資料介面 在EditText中輸入待查詢號碼,獲取號碼後 在子執行緒中使用HttpUrlconnection獲取JSON資料,之後進行解析 資料獲取完成後, 在主執行緒中更新UI,顯示獲取的號碼歸屬地資訊 佈局檔案 <

從kafka獲取資料解析json格式寫入到mysql中

專案需求:將kafka解析來的日誌獲取到資料庫的變更記錄,按照訂單的級別和訂單明細級別寫入資料庫,一條訂單的所有資訊包括各種維度資訊均儲存在一條json中,寫入mysql5.7中。 配置資訊: [Global] kafka_server=xxxxxxxxxxx:9092 kafka_to

vue慕課網音樂專案手記:32-如何獲取歌詞的資料解析jsonp的格式為json的格式

首先:在qq音樂的官網,能看到如下的歌詞資料這是一個jsonp的資料,但是官方對它做了一些加密,所以還是要通過node去強制改變請求頭。新建一個song.jsimport { commonParams } from './config' import axios from '

關於java 傳送http json資料格式請求時伺服器端如何接收json資料解析

一般情況下,傳送http請求時content-tye是application/x-www-form-urlencoded格式,而這樣的格式會以鍵值對的形似被封裝,至於是在瀏覽器傳送的時候被封裝的還是在伺服器端被封裝的我還不太清楚。但是我的猜測是在瀏覽器傳送請求的時候在客戶端

android studio中存放json檔案獲取assets檔案下下檔案獲取本地json檔案解析

轉自http://blog.csdn.net/yanxiaosa/article/details/70859927 以前看過這些知識,今天用到的時候,發現自己忘記了,都不知道assets資料夾在哪個目錄下。百度了一下,assets目錄和java目錄是同一個級別的。  我

如何使用webmagic傳送post請求解析傳回的JSON

1.分析頁面 看到引數有3個,分別是cbfy,pageno和pagesize。傳回來的資料是以json形式存在: 2.json的解析方法 webmagic-extension包中提供了

.net從網絡接口地址獲取json然後解析成對象(二)

ESS 代碼 ring amp type .get div cep quest 整理代碼,這是第二種方法來讀取json,然後反序列化成對象的,代碼如下: 1 public static Order GetOrderInfo(string _tid, string _or

~隨筆B023~jquery獲取json的大小json中為當前頁面迴圈賦值

本程式碼使用情況:   二次錄入與一次錄入的資料進行實時比對。——controller向前臺傳model,而model中附帶了多個list   1.model.addAttribute("currencyModelJson", JSON.toJSONString(currencyModel)); // 用

SpringMVC 接收頁面Post提交的json字串解析

son 使用的是ali的fastjson; 頁面提交的是json字串,後臺使用@RequestBody String param接收資料,通過json解析param;   頁面: <%@ page language="java" contentType="text/h

解析xml文件xml文件中的資料拼接成insert語句

education.xml的內容是: <?xml version="1.0" encoding="utf-8"?> <Msg> <Head>   <Id>20140529100039</Id>   <Name&

非同步傳送表單資料到JavaBean響應JSON文字返回

1)  提交表單後,將JavaBean資訊以JSON文字形式返回到瀏覽器 <form> 編號:<input type="text" name="id" value="1"/><br/> 姓名:<input type

異步發送表單數據到JavaBean響應JSON文本返回

add resp url tex mvc button action ajax ada 1) 提交表單後,將JavaBean信息以JSON文本形式返回到瀏覽器 <form> 編號:<input type="text" name="

使用JDBC獲取資料庫資料生成json格式檔案(省市區三級聯動)

前言: 轉眼已經2018年了, 17年有點忙,出差將近三個月,部落格也停更了好久。 一直都是不停的修復bug,和做一些業務需要的提示和互動。主要是因為和硬體有關係所以比較麻煩,開發週期也很長,而且還不穩定,硬體先行,然後在是除錯,互動。不過也有好處,學到的東西自然不是簡簡單單的 程式碼了。

Python資料爬蟲學習筆記(21)爬取京東商品JSON資訊解析

一、需求:有一個通過抓包得到的京東商品的JSON連結,解析該JSON內容,並提取出特定id的商品價格p,json內容如下: jQuery923933([{"op":"7599.00","m":"9999.00","id":"J_5089253","p":"7099.00"}

okhttp傳送post請求攜帶json資料接收json資料

okhttp工具類: package tools; import com.squareup.okhttp.*; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; /

java後臺呼叫API後臺解析json

在京的大部分公司都是前後端分離,我是後臺java開發人員,一般都是我們寫好api,給前臺,呼叫是他們的事兒,因為要接入第三方的api,這裡做一下筆記 首先要先拿到第三方api的介面文件,一般大部分都是http請求,先根據appKey和appSecret請求回token,再去

Java從網路中請求獲取JSon資料以及解析JSON資料----(自創請註明)

 Json資料是比較常用的資料型別解析,優點就不多說啦。來看看方法: public static JSONObject getJsonObject(String url) { JSONObjec