Json

//////////2016-12-26 ~ 2017-1-9///////////

int study_data(){

字符集和字符編碼

字符集:字符的組合

字符編碼方式:把字符映射成二進(jìn)制數(shù)字的過(guò)程

常見編碼方式:ASCII,UTF-8,GB2312,GBK

亂碼問(wèn)題:編碼方式和解碼方式不匹配

JSON

JavaScript的對(duì)象表示法(JavaScript Object Notation)

JSON是存儲(chǔ)和交換文本信息的語(yǔ)法,類似XML

JSON比XML更小,更快,更易解析

什么是JSON:

? ? 1.JSON指的是JavaScript的對(duì)象表示法(JavaScript Object Notation)

? ? 2.JSON是輕量級(jí)的文本數(shù)據(jù)交換格式

? ? 3.JSON獨(dú)立于語(yǔ)言(JSON解析器和JSON庫(kù)支持許多不同的編程語(yǔ)言)

? ? 4.JSON具有自我描述性,更易理解

JSON與XML的區(qū)別:

? ? 1.沒(méi)有結(jié)束標(biāo)簽

? ? 2.更短

? ? 3.讀寫速度更快

? ? 4.能夠使用內(nèi)建的JavaScript eval()方法進(jìn)行解析

? ? 5.使用數(shù)組

? ? 6.不使用保留字

JSON語(yǔ)法規(guī)則:

? ? 1.數(shù)據(jù)在名稱/值對(duì)中

? ? 2.數(shù)據(jù)由逗號(hào)分隔

? ? 3.花括號(hào)保存對(duì)象

? ? 4.方括號(hào)保存數(shù)組

JSON值:

? ? 1.數(shù)字(整數(shù)或浮點(diǎn)數(shù))

? ? 2.字符串(在雙引號(hào)中)

? ? 3.邏輯值(true或false)

? ? 4.數(shù)組(在方括號(hào)中)

? ? 5.對(duì)象(在花括號(hào)中)

? ? 6.null

把JSON字符串轉(zhuǎn)換為JavaScript對(duì)象的方法:

? ? 1.

? ? //由JSON字符串轉(zhuǎn)換為JSON對(duì)象

? ? var obj = eval('(' + str + ')');

? ? 或者

? ? var obj = str.parseJSON();?

? ? 或者

? ? var obj = JSON.parse(str);?

? ? 然后,就可以這樣讀?。?/p>

? ? ? ? Alert(obj.name);

? ? ? ? Alert(obj.sex);

? ? 注:如果obj本來(lái)就是一個(gè)JSON對(duì)象,那么使用eval()函數(shù)轉(zhuǎn)換后(哪怕是多次轉(zhuǎn)換)還是JSON對(duì)象,但是使用parseJSON()函數(shù)處理后會(huì)有問(wèn)題(拋出語(yǔ)法異常)。

? ? 2.

? ? //將JSON對(duì)象轉(zhuǎn)化為JSON字符

? ? var last=obj.toJSONString();?

? ? 或者

? ? var last=JSON.stringify(obj);?

? ? alert(last);

注意:

? ? 上面的幾個(gè)方法中,除了eval()函數(shù)是js自帶的之外,其他的幾個(gè)方法都來(lái)自json.js包。新版本的 JSON 修改了 API,將 JSON.stringify() 和 JSON.parse() 兩個(gè)方法都注入到了 Javascript 的內(nèi)建對(duì)象里面,前者變成了 Object.toJSONString(),而后者變成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,則說(shuō)明json包版本太低。

GSON

Gson是一個(gè)Java類庫(kù),用于將Java對(duì)象轉(zhuǎn)換為它們所代表的JSON數(shù)據(jù),也可以用于將一個(gè)JSON字符串轉(zhuǎn)換為對(duì)應(yīng)的Java對(duì)象。

Gson的目標(biāo)為:

? ? 1. 提供像toString()和構(gòu)造方法(工廠方法)一樣簡(jiǎn)單使用的機(jī)制來(lái)將Java對(duì) 象轉(zhuǎn)換為JSON或者反過(guò)來(lái)將JSON轉(zhuǎn)換為Java對(duì)象。

? ? 2. 允許將已經(jīng)存在并且不可修改的對(duì)象轉(zhuǎn)換JSON,或者反過(guò)來(lái)。

? ? 3. 允許為對(duì)象自定義映射關(guān)系。

? ? 4. 支持任意復(fù)雜的對(duì)象。

? ? 5. 生成緊湊又易讀的JSON輸出。

一般要使用Gson工具,需要?jiǎng)?chuàng)建一個(gè)Gson對(duì)象,然后進(jìn)行相應(yīng)的操作。并且可以重用同一個(gè)Gson對(duì)象進(jìn)行多次Json序列化和反序列化操作。

例如:

Gson gson = new Gson();

也可以使用GsonBuilder這個(gè)類,它允許使用參數(shù)(例如版本控制等等)來(lái)才創(chuàng)建一個(gè)Gson實(shí)例。

例如:

Gson gson = new GsonBuilder().setVersion(1.0).create();

對(duì)于使用者來(lái)說(shuō),只需要調(diào)用Gson類的toJson與fromJson方法,便可以輕松實(shí)現(xiàn)序列化與反序列化的操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容