摘要:采用完全獨(dú)立于任何程序語言的文本格式,使成為理想的數(shù)據(jù)交換語言為什么需要提到,我們就應(yīng)該和來進(jìn)行對比。也是一種存儲(chǔ)和交換文本信息的手段。那么好在哪里呢比更小更快,更易解析。使用的時(shí)候,也支持將轉(zhuǎn)成但是,我們不一定使用框架來做開發(fā)呀。
什么是JSON
JSON:JavaScript Object Notation 【JavaScript 對象表示法】
JSON 是存儲(chǔ)和交換文本信息的語法。類似 XML。
JSON采用完全獨(dú)立于任何程序語言的文本格式,使JSON成為理想的數(shù)據(jù)交換語言S
為什么需要JSON提到JSON,我們就應(yīng)該和XML來進(jìn)行對比。XML也是一種存儲(chǔ)和交換文本信息的手段。那么JSON好在哪里呢??
JSON 比 XML 更小、更快,更易解析。
javaScript原生支持JSON,解析速度會(huì)很快
XML解析成DOM對象的時(shí)候,瀏覽器【IE和fireFox】會(huì)有差異
使用JSON會(huì)更簡單
更加容易創(chuàng)建JavaScript對象
var p = {"city":["北京","上海","廣州","深圳"]}; for(var i=0;iJSON語法"); }
客戶端與服務(wù)端的交互數(shù)據(jù)無非就是兩種
數(shù)組
對象
于是乎,JSON所表示的數(shù)據(jù)要么就是對象,要么就是數(shù)據(jù)
JSON語法是javaScript語法的子集,javaScript用[]中括號(hào)來表示數(shù)組,用{}大括號(hào)來表示對象,JSON亦是如此
JSON數(shù)組:var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName": "Carter" } ];JSON對象
var obj = { age: 20, str: "zhongfucheng", method: function () { alert("我愛學(xué)習(xí)"); } };
當(dāng)然啦,數(shù)組可以包含對象,在對象中也可以包含數(shù)組
解析JSONjavaScript原生支持JSON的,我們可以使用eval()函數(shù)來解析JSON,把JSON文本數(shù)據(jù)轉(zhuǎn)換成一個(gè)JavaScript對象。
function test() { //在寫JOSN的時(shí)候,記得把帶上逗號(hào) var txt = "{a:123," + "b:"zhongfucheng"}"; //使用eval解析JSON字符串,需要增添() var aa = eval("(" + txt + ")"); alert(aa); }效果 不用框架時(shí)將JavaBean轉(zhuǎn)成JSON
使用Strus2的時(shí)候,Struts2自帶了組件能夠讓JavaBean對象、集合轉(zhuǎn)成是JSON,不用我們自己拼接...這是非常方便的。
使用SpringMVC的時(shí)候,SpringMVC也支持將JavaBean轉(zhuǎn)成JSON
但是,我們不一定使用框架來做開發(fā)呀。因此,我們還得學(xué)習(xí)使用第三方庫來將JavaBean對象、集合轉(zhuǎn)成JSON
導(dǎo)入開發(fā)包commons-io-2.0.1.jar
commons-lang-2.5.jar
commons-collections-3.1.jar
commons-beanutils-1.7.0.jar
ezmorph-1.0.3.jar
json-lib-2.1-jdk15.jar
事例代碼package cn.itcast.javaee.js.bean2json; import net.sf.json.JSONArray; import java.util.*; /** * 使用第三方工具,將JavaBean對象/List或Set或Map對象轉(zhuǎn)成JSON * @author AdminTC */ public class TestBean2Json { private static void javabean2json() { City city = new City(1,"廣州"); JSONArray jSONArray = JSONArray.fromObject(city); String jsonJAVA = jSONArray.toString(); System.out.println(jsonJAVA); //[{"id":1,"name":"廣州"}] } private static void list2json() { ListcityList = new ArrayList (); cityList.add(new City(1,"廣州")); cityList.add(new City(2,"珠海")); JSONArray jSONArray = JSONArray.fromObject(cityList); String jsonJAVA = jSONArray.toString(); System.out.println(jsonJAVA); //[{"id":1,"name":"廣州"},{"id":2,"name":"珠海"}] } private static void set2json() { Set citySet = new LinkedHashSet (); citySet.add(new City(1,"廣州")); citySet.add(new City(2,"珠海")); JSONArray jSONArray = JSONArray.fromObject(citySet); String jsonJAVA = jSONArray.toString(); System.out.println(jsonJAVA); //[{"id":1,"name":"廣州"},{"id":2,"name":"珠海"}] } private static void javabeanlist2json() { List cityList = new ArrayList (); cityList.add(new City(1,"中山")); cityList.add(new City(2,"佛山")); Province province = new Province(1,"廣東",cityList); JSONArray jSONArray = JSONArray.fromObject(province); String jsonJAVA = jSONArray.toString(); System.out.println(jsonJAVA); /* [ { "id":1, "name":"廣東" "cityList":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}], } ] */ } private static void map2json() { List cityList = new ArrayList (); cityList.add(new City(1,"中山")); cityList.add(new City(2,"佛山")); Map map = new LinkedHashMap (); map.put("total",cityList.size());//表示集合的長度 map.put("rows",cityList);//rows表示集合 JSONArray jSONArray = JSONArray.fromObject(map); String jsonJAVA = jSONArray.toString(); System.out.println(jsonJAVA); //[{"total":2,"rows":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}]}] jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1); System.out.println(jsonJAVA); } }
把要解析成JSON 的javaBena對象、集合放進(jìn)下面這段代碼即可!
JSONArray jSONArray = JSONArray.fromObject(map);
無論放進(jìn)去什么,返回的都是數(shù)組
總結(jié)如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章的同學(xué),可以關(guān)注微信公眾號(hào):Java3y
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71002.html
摘要:目錄前言架構(gòu)安裝第一個(gè)爬蟲爬取有道翻譯創(chuàng)建項(xiàng)目創(chuàng)建創(chuàng)建解析運(yùn)行爬蟲爬取單詞釋義下載單詞語音文件前言學(xué)習(xí)有一段時(shí)間了,當(dāng)時(shí)想要獲取一下百度漢字的解析,又不想一個(gè)個(gè)漢字去搜,復(fù)制粘貼太費(fèi)勁,考慮到爬蟲的便利性,這篇文章是介紹一個(gè)爬蟲框架, 目錄 前言 架構(gòu) 安裝 第一個(gè)爬蟲:爬取有道翻譯 創(chuàng)建項(xiàng)目 創(chuàng)建Item 創(chuàng)建Spider 解析 運(yùn)行爬蟲-爬取單詞釋義 下載單詞語音文件 ...
摘要:相信很多人在格式化字符串的時(shí)候都用的語法,提出一種更先進(jìn)的格式化方法并成為的標(biāo)準(zhǔn)用來替換舊的格式化語法,從開始已經(jīng)實(shí)現(xiàn)了這一方法其它解釋器未考證。 showImg(https://segmentfault.com/img/remote/1460000018650325); 相信很多人在格式化字符串的時(shí)候都用%s % v的語法,PEP 3101 提出一種更先進(jìn)的格式化方法 str.for...
摘要:我們很容易發(fā)現(xiàn),過濾器可以比喻成一張濾網(wǎng)。這究竟是怎么回事啊我們可以這樣理解過濾器不單單只有一個(gè),那么我們怎么管理這些過濾器呢在中就使用了鏈?zhǔn)浇Y(jié)構(gòu)。第一種方式在文件中配置用于注冊過濾器用于為過濾器指定一個(gè)名字,該元素的內(nèi)容不能為空。 什么是過濾器 過濾器是Servlet的高級(jí)特性之一,也別把它想得那么高深,只不過是實(shí)現(xiàn)Filter接口的Java類罷了! 首先,我們來看看過濾器究竟Web...
摘要:前言上一次我們對的應(yīng)用進(jìn)行了一次全面的分析,這一次我們來聊聊。 showImg(https://segmentfault.com/img/remote/1460000020077803?w=1280&h=853); 前言 上一次我們對Paging的應(yīng)用進(jìn)行了一次全面的分析,這一次我們來聊聊WorkManager。 如果你對Paging還未了解,推薦閱讀這篇文章: Paging在Recy...
閱讀 838·2021-11-22 15:25
閱讀 1458·2021-09-08 09:45
閱讀 1754·2021-09-02 09:46
閱讀 1347·2019-08-30 15:56
閱讀 1558·2019-08-29 15:14
閱讀 1188·2019-08-29 13:06
閱讀 2036·2019-08-29 12:34
閱讀 1430·2019-08-26 12:14