出自:http://blog.163.com/xiao_mege/blog/static/72942753201102693545195/
在述說這個(gè)例子之前,我假想你已經(jīng)知道什么是Json數(shù)據(jù)了,那么在這里在溫習(xí)一下吧:
JSON(JavaScript Object Notation) 是一種數(shù)據(jù)交換格式,采用完全獨(dú)立于語言的文本格式;
JSON建構(gòu)于兩種結(jié)構(gòu):“名稱/值”對(duì)的集合和值的有序列表
下面詳細(xì)說明下:
“名 稱/值”對(duì)的集合(A collection of name/value pairs)。不同的語言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表 (hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。
值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數(shù)組(array)。
JSON具有以下這些形式:
對(duì)象是一個(gè)無序的“‘名稱/值’對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值’ 對(duì)”之間使用“,”(逗號(hào))分隔。
數(shù)組是值(value)的有序集合。一個(gè)數(shù)組以“[”(左中括號(hào))開始,“]”(右中括號(hào))結(jié)束。值之間使用“,”(逗號(hào))分隔。
值(value)可以是雙引號(hào)括起來的字符串(string)、數(shù)值(number)、 ture、false、 null、對(duì)象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。
字符串(string)是由雙引號(hào)包圍的任意數(shù)量Unicode字符的集合,使用反斜線轉(zhuǎn)義。一個(gè)字符(character)即一個(gè)單獨(dú)的字符串(character string)。
空白可以加入到任何符號(hào)之間
------------------------以下來自百度的最新報(bào)告
下面介紹Ext中兩個(gè)很重要的方法,其實(shí),Ext中沒有多余的方法,每個(gè)方法都能夠恰當(dāng)好處的發(fā)揮它的作用,這里指它很重要,是因?yàn)樗鼈兲S昧?尤其是在與數(shù)據(jù)庫交換數(shù)據(jù)的時(shí)候
Ext中有兩個(gè)很重要的方法,一個(gè)是decode;一個(gè)是encode.顧名思義,一個(gè)是編碼,一個(gè)是解碼,你難道真的這么想嗎?
嚴(yán)格的說,一個(gè)是將json字符串轉(zhuǎn)換成對(duì)象;一個(gè)是將對(duì)象轉(zhuǎn)換成json字符串
下 面這個(gè)示例主要介紹的是Ext.decode()和Ext.encode()的用法,其中使用到了json格式的串,首先是用到了 Ext.decode()方法,將json格式的串轉(zhuǎn)換成對(duì)象,然后通過對(duì)象訪問對(duì)象所包含的各個(gè)屬性的值,通過消息框把它們顯示出來;之后在用 Ext.encode()將已經(jīng)生成的對(duì)象轉(zhuǎn)換成開始定義的json格式的串,也通過消息框把它們顯示出來,加了一個(gè)函數(shù),使得在第一個(gè)消息框彈出3秒鐘 后再彈出第二個(gè)消息框
用圖片說明吧
//下面是將json字符串轉(zhuǎn)換成對(duì)象后,通過對(duì)象訪問屬性生成的消息框
//下面是將上面生成的對(duì)象又轉(zhuǎn)換成json字符串后生成的消息框
具體看下示例吧
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testDecode.aspx.cs" Inherits="Test.Example.hello.testDecode" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>測試Ext.decode()和Ext.encode()方法</title>
<link rel="Stylesheet" type="text/css" />
<link rel="Stylesheet" type="text/css" />
<script type="text/javascript" src="http://www.cnblogs.com/ExtJS/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="http://www.cnblogs.com/ExtJS/ext-all.js"></script>
<script type="text/javascript" src="http://www.cnblogs.com/ExtJS/ext-lang-zh_CN.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<script type="text/javascript">
function ready()
{
//再用一個(gè)示例說明下如何使用decode和encode,現(xiàn)在我們已經(jīng)知道什么是json數(shù)據(jù)格式了,也知道它的作用和語法了
//現(xiàn)在我們就開始演練吧
//先使用decode方法,這個(gè)方法是將json字符串轉(zhuǎn)換成對(duì)象的
//第一步:先定義一個(gè)json字符串吧
var 劉天王 = "{姓名:'劉德華',性別:'男',老家:'香港'}";
//第二步:現(xiàn)在我們要把劉天王轉(zhuǎn)換成對(duì)象了
var who = Ext.decode(劉天王);
//第三步:who成了對(duì)象后就相當(dāng)于是類的對(duì)象了,里面的姓名,性別,老家都成了who的屬性了,現(xiàn)在知道怎么通過對(duì)象訪問屬性了吧
var name = who.姓名; //獲取who對(duì)象的[姓名]屬性
var sex = who.性別; //獲取who對(duì)象的[性別]屬性
var home = who.老家; //獲取who對(duì)象的[老家]屬性
//第四步:下面將獲取的信息組合起來
var result = "劉天王資料的信息:姓名是--"+name + ";性別--"+sex+";老家--"+home;
//第五步:我們把獲取的who對(duì)象的信息用彈出消息的方式顯示出來吧
Ext.Msg.alert("劉天王的資料信息",result);
//以上就是將一個(gè)json字符串轉(zhuǎn)換成對(duì)象后,再逐個(gè)訪問對(duì)象的屬性的示例
//下面使用encode方法
//encode方法很簡單了,就是將上面生成的who對(duì)象再轉(zhuǎn)換成第一步定義的json字符串
//定義一個(gè)到時(shí)間執(zhí)行的函數(shù)
var getJson = function()
{
//你完全可以把這段寫在函數(shù)外面,之所以包含在里面純屬是為了在顯示第一個(gè)消息框后再隔3秒顯示下面這個(gè)消息窗口
var jsonStr = Ext.encode(who);
//我們還是通過彈出消息的方式把這個(gè)json字符串顯示出來吧
Ext.Msg.alert("jsonStr信息內(nèi)容",jsonStr);
};
//下面這個(gè)方法意思是:在3秒之后會(huì)調(diào)用函數(shù)getJson執(zhí)行里面包含的腳本
setTimeout(getJson,3000);
//補(bǔ)充點(diǎn)東西
//Ext.decode()和Ext.encode()分別是是 Ext.util.JSON.decode()和Ext.util.JSON.encode的簡寫
}
Ext.onReady(ready);
</script>
</div>
</form>
</body>
</html>
現(xiàn)在這個(gè)例子就可以說明Ext.decode()和Ext.encode()方法的完美作用了.
用圖片說明吧
//下面是將json字符串轉(zhuǎn)換成對(duì)象后,通過對(duì)象訪問屬性生成的消息框
//下面是將上面生成的對(duì)象又轉(zhuǎn)換成json字符串后生成的消息框
------------------------------
Ext.encode與Ext.decode的JSON轉(zhuǎn)換
14 五月 2011 | 網(wǎng)頁前端 | Tags: decode, encode, extjs
在Extjs中,我們可以通過json來交換數(shù)據(jù),Extjs內(nèi)置了兩個(gè)方法來互相轉(zhuǎn)換。
Ext.decode( String json ) : Object
把json字符串轉(zhuǎn)換為對(duì)象
Ext.encode( Mixed o ) : String
把對(duì)象轉(zhuǎn)換為字符串,用這個(gè)方法可以在ajax提交時(shí)返回?cái)?shù)據(jù)
var arr = [];
var field1 = {};
field1['name'] = 'fatkun';
field1['age'] = 23;
var field2 = {};
field2['name'] = 'test';
field2['age'] = 24;
arr.push(field1);
arr.push(field2);
Ext.encode(arr);
//返回結(jié)果"[{"name":"fatkun","age":23},{"name":"test","age":24}]"
en