首先回顧一下JSON:
JSON:JavaScript 對(duì)象表示法(JavaScript Object Notation)。
JSON 是存儲(chǔ)和交換文本信息的語法,類似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON中,我們首先要理解兩個(gè)最基本的概念,第一、對(duì)象,第二、數(shù)組。
JSON中,用 { }來描述一個(gè)對(duì)象,一個(gè)對(duì)象有不同的屬性,每個(gè)屬性都必須用 ""括起來,每個(gè)屬性對(duì)應(yīng)有屬性值,如果屬性值為字符串,則也用 ""括起來,如果屬性值為非字符串,則不用雙引號(hào)括起來;用 [ ] 來描述一個(gè)數(shù)組,數(shù)組可存儲(chǔ)多個(gè)對(duì)象,每個(gè)對(duì)象間用 , 隔開(以上所說的符號(hào)為英文半角符號(hào))。
如描述一個(gè)員工對(duì)象:
JSON對(duì)象
描述一個(gè)員工對(duì)象數(shù)組:
JSON對(duì)象數(shù)組
如果對(duì)編寫的JSON字符串有疑慮,為了確保準(zhǔn)確性,可以使用JSON在線校驗(yàn)工具檢查格式是否正確!
在哪些場景下,我們用JSON比較多呢?
場景一:在JavaScript中使用JSON對(duì)象,如
JavaScript中定義JSON對(duì)象及數(shù)組
JSON字符串時(shí)常需要轉(zhuǎn)換成JSON對(duì)象來處理,則我們可以使用eval函數(shù),如:
使用eval函數(shù)把JSON字符串轉(zhuǎn)換成JSON對(duì)象
在ECMAScript 5中提供了JSON JS對(duì)象,可以直接使用JSON.parse(jsonStr)把JSON字符串轉(zhuǎn)換成JSON對(duì)象,這個(gè)時(shí)候就不需要使用eval函數(shù)啦;也可以直接使用JSON.stringify(jsonObj);把JSON對(duì)象轉(zhuǎn)換成JSON字符串。
JSON對(duì)象與字符串的相互轉(zhuǎn)換
場景二:使用AJAX從前端把請求提交到后臺(tái),在JavaEE Servlet中返回JSON字符串到前端,如
AJAX POST請求提交到后臺(tái)
后臺(tái)Servlet返回JSON字符串
我們可以看到如果JSON字符串由我們自己直接組裝那是相當(dāng)?shù)穆闊鲥e(cuò)的概率也很大,所以我們可以借助一些JSON處理的JAR包幫助我們在后臺(tái)完成Java對(duì)象到JSON字符串的轉(zhuǎn)換,如阿里巴巴提供的fastjson,Google提供的gson,還有json-lib等。
場景三:在Struts2中返回JSON字符串到前端,需要借助 struts-json-plugin插件
場景四:在SpringMVC中返回JSON字符串到前端,在需要返回JSON字符串的方法前加 @ResponseBody注解
場景五:使用QQ開放接口,微信支付等接口,接口返回的數(shù)據(jù)往往是JSON字符串
場景六:開發(fā)APP手機(jī)應(yīng)用,從手機(jī)應(yīng)用對(duì)應(yīng)的后臺(tái)服務(wù)返回的數(shù)據(jù)往往也是JSON字符串
場景七:對(duì)菜鳥程序員說,你會(huì)用JSON嗎?