日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

数据交换格式Json与XML

發(fā)布時間:2025/3/16 asp.net 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据交换格式Json与XML 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是數(shù)據(jù)交換格式:

主流的有Json、XML、HTML

數(shù)據(jù)交換格式的應用場景:

移動端(安卓,IOS)通訊方式采用http協(xié)議+Json格式的restful風格。

很多互聯(lián)網(wǎng)公司都是用Http協(xié)議+Json格式。

因為XML比較重WebService服務采用Http協(xié)議+XML格式的銀行項目使用比較多。

?

什么是Json數(shù)據(jù)交換格式:

Json:相對于XML來說是一種輕量級數(shù)據(jù)交換格式。因為XML比較復雜,需要大量代碼,所以客戶端和服務器端數(shù)據(jù)交換通常使用Json來交換。

XML:是一種重量級的數(shù)據(jù)交換格式(標記語言)。

Json的基本語法:

{

"id": "小馬",

"name": "",

"itemts": [{

"ids": "小米",

"name": "沒峨眉"

}, {

"id": "29",

"sex": ""

}]

}

Java操作Json有哪些框架?

Gson(谷歌)fastjson(阿里巴巴)----主流,jacksonSpringmvc

第一種是直接使用Json中的方法進行解析:

首先新建一個maven工程,導入fastjson包。

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.47</version>

</dependency>

新建一個TestDemo

public?class?TestDemo {

static?String json="{\"id\": \"小馬\",\"name\": \"男\(zhòng)",\"itemts\": [{\"id\": \"小米\",\"name\": \"沒峨眉\"}, {\"id\": \"29\",\"name\": \"女\"}]}";

public?static?void?main(String[] args) {

JSONObject jsonObject=new JSONObject().parseObject(json);

String id=jsonObject.getString("id");

String name=jsonObject.getString("name");

System.out.println(id+","+name);

JSONArray array=jsonObject.getJSONArray("itemts");

for(int?i=0;i<array.size();i++) {

JSONObject object=array.getJSONObject(i);

String ids=object.getString("ids");

String names=object.getString("name");

System.out.println(ids+","+names);

}

}

}

以上這種方式太過麻煩,很少公司使用,一般使用對象封裝好之后,直接拿來用。

首先新建一個User類。注意:User類里面的屬性與Json中的對象一致

public?class?User {

private?String id;

private?String name;

private?List<Itemts> itemts;

}

加上getsettoString方法

再新建一個Itemts類:

public?class?Itemts?{

private?String id;

private?String name;

}

也是加上get、settoString方法。

新建一個測試類

public?class?TestDemo {

static?String json="{\"id\": \"小馬\",\"name\": \"男\(zhòng)",\"itemts\": [{\"id\": \"小米\",\"name\": \"沒峨眉\"}, {\"id\": \"29\",\"name\": \"女\"}]}";

public?static?void?main(String[] args) {

//使用對象的方式解析json,使用的方便,廣泛。

User user=new?JSONObject().parseObject(json, User.class);

System.out.println(user.toString());

}

}

第二種是使用類的方式封裝json,還是使用以上的UserItemts類。

public?class?TestDemo2 {

public?static?void?main(String[] args) {

JSONObject root=new JSONObject();

root.put("id","10");

root.put("name", "小米");

JSONArray array=new JSONArray();

JSONObject object1=new JSONObject();

object1.put("itemts", "29");

object1.put("itemtsName", "小馬");

JSONObject object2=new JSONObject();

object2.put("itemts", "38");

object2.put("itemtsName", "小紅");

//把對象放進數(shù)組里面

array.add(object1);

array.add(object2);

//把數(shù)組放進對象里面

root.put("itemt", array);

System.out.println(root.toString());

}}

還有另一種實體類封裝Json字符串

public?class?TestDemo2 {

public?static?void?main(String[] args) {

//使用實體類封裝json字符串

User user=new?User();

user.setId("29");

user.setName("小馬");

List<Itemts> list=new?ArrayList<Itemts>();

Itemts itemts1=new?Itemts();

itemts1.setId("28");

itemts1.setName("小紅");

Itemts itemts2=new?Itemts();

itemts2.setId("34");

itemts2.setName("小和");

list.add(itemts1);

list.add(itemts2);

user.setItemts(list);

System.out.println(user.toString());

}

}

Json到此就告一段落。

XML解析方式:

什么是XML

XML全程是:可擴展的標記語言,主要用于描述數(shù)據(jù)和用作配置文件。

XML聲明:指明所用XML的版本,文檔的編碼,文檔的獨立性信息。

文檔類型聲明:指出XML文檔所用的DTD

元素:有開始標簽,元素內容和結束標簽構成。

注釋:以結束,用于對文檔中的內容起到一個解釋的作用。

處理指令:通過處理指令來通知其他應用程序來處理非XML格式的數(shù)據(jù),格式為XML文檔的根元素被稱為文檔元素,它和在其外部出現(xiàn)的處理指令,注釋等作為文檔實體字節(jié)點,根元素本身與其內部的子元素也是一棵樹。

XML樣例:

<?xml version="1.0" encoding="UTF-8"?> ?

<students> ?

????<student1 id="001"> ?

????????<property>houe ary you</property>

????</student1> ?

????<student2 id="002"> ?

???????<property>houe ary you2</property>

????</student2> ?

</students> ?

XML解析方式?

Dom4j、SaxPull三種常用的。

Dom4jSax區(qū)別

?dom4j不適合大文件的解析,因為它是一下子將文件加載到內存中,所以有可能出現(xiàn)內存溢出,sax是基于事件來對xml進行解析的,所以他可以解析大文件的xml,也正是因為如此,所以dom4j可以對xml進行靈活的增刪改查和導航,而sax沒有這么強的靈活性,所以sax經(jīng)常是用來解析大型xml文件,而要對xml文件進行一些靈活(crud)操作就用dom4j。

?

使用Dom4j解析xml代碼:

首先添加dom4jjar

<dependency>

????<groupId>org.dom4j</groupId>

????<artifactId>dom4j</artifactId>

????<version>2.1.1</version>

</dependency>

Java代碼

public?class?TestXML {

public?static?void?main(String[] args) throws?DocumentException {

SAXReader reader=new?SAXReader();

//讀取文件目錄

Document read?= reader.read("E:\\student.xml");

//得到文件根節(jié)點

Element rootElement?= read.getRootElement();

getNods(rootElement);

}

static?void?getNods(Element rootElement) {

//得到根節(jié)點名稱

String name?= rootElement.getName();

System.out.println("根節(jié)點名稱"+name);

//把子節(jié)點放進List集合里

List<org.dom4j.Attribute> attributes?= rootElement.attributes();

for?(org.dom4j.Attribute attribute?: attributes) {

System.out.println("節(jié)點名稱"+attribute.getName()+"節(jié)點屬性"+attribute.getValue());

}

String value=rootElement.getTextTrim().trim();

if(!value.equals("")) {

System.out.println("節(jié)點的值是"+value);

}

//使用迭代器遍歷子節(jié)點

Iterator<Element> elementIterator?= rootElement.elementIterator();

while(elementIterator.hasNext()) {

Element next?= (Element) elementIterator.next();

getNods(next);

}

}

}

結果是

?

?

轉載于:https://www.cnblogs.com/InterfaceAOP/p/10454569.html

總結

以上是生活随笔為你收集整理的数据交换格式Json与XML的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。