為了在不同系統,不同程式設計語音的不同軟體間傳輸檔案資訊的時候能夠互相便捷的識別檔案,有了統一規範的XML,再進一步簡便化,易於電腦,人和網路傳輸閱讀的迭代的產物就是JSON。
XML這種檔案本質就是一種特殊格式要求的字串,打個比喻就是被規定寫作格式的畢業論文,以便別的電腦分類識別,來進行後續處理。
XML的解析分為SAX解析,DOM解析。
SAX是逐個逐條程式碼檢索解析,不能同時訪問不同部分的資料且無法得知當前元素的在整體檔案中的位置的一種無法修改的只讀檔案。
DOM是直接在記憶體中以文件樹的形式載入,可以進行修改操作,且是整個檔案一起讀取,可以知道當前元素的相對位置,以及其他元素的位置。但是同一時刻維持的資源消耗更大。
DOM解析的JAVA定製版本文件模型就是JDOM解析,在使用時使用了大量java的具體類,而不是介面。
DOM4J則是JDOM一種分支,一種多功能整合的JDOM。
JSON在格式上相對於XML更自由更簡便,但是巢狀過多後
XML格式:
<express>
<ID>abs123</ID>
<site>40號</site>
<……>……</……>
……
</express>
JSON:
{
"ID":"abs123",
"site":"一個物件",
"……":"……",
……
}
常用的JSON解析工具包括谷歌的解析Gson和阿里的解析FastJson。
都需要引入JAR包,都有不同的對應格式。
Gson格式:
1.將java中的物件轉換成JSON字串:
String json = new Gson().toJSON(new Book())
提取後的格式就是:
"{\"id\":1,\"name\":\"halibote\"}"
字串和數字的格式有些許不同,要注意。
2.將JSON字串轉化成java中的 物件
定義要轉換的json:
String j = ……;
將j傳入通過方法傳入物件中
Book book = new Gson.fromJson(j,Book.class)
假如定義的物件屬性不齊全,則少了的部分資料讀取出來時會丟失。
假如接的時候用HashMap接:
HashMap hm = new Gson.fromJson(j,HashMap.class)
注意接到的物件內的每一個鍵值對的型別,後續呼叫不要調錯了。
FastJson格式:
1.將java中的物件轉換成JSON字串:
String json = JSON.toJSONString(new Book());
提取後的格式就是:
"{\"id\":1,\"name\":\"halibote\"}"
同理
2.將JSON字串轉化成java中的 物件
定義要轉換的json:
String j = ……;
將j傳入通過方法傳入物件中
Book book = JSON.parseObject(j,Book.class);
可以存入物件也可以存入陣列
如:
String j = "[\"哈利波特\",\"198元\"……]"
List<String> b = JSON.parseArray(j,String.class);
String i = b.get(0);
注意這裡接收陣列時,如果和接受物件的方法一樣使用,則要注意資料型別。轉成了Book就要注意資料是不是會在Book裡面丟失或者錯排,如哈利波特198元,鬥破蒼穹199元,使用陣列分開四段傳輸,就要記得陣列雙數下標存書名,單數下標存價格。(很麻煩)
總之如果用陣列傳的型別就要是用在陣列比較方便的。否則就要注意內容的設定規律,提取呼叫的時候要注意。