ASP.NET AJAX的JSON序列化和反序列化
JSON序列化和反序列化
- POST /Ajax/ZipCodeService.asmx/GetCityAndState HTTP/1.1
- Accept: */*
- Accept-Language: en-us
- Referer: http://localhost:1997/Ajax/ZipCodePage.aspx
- UA-CPU: x86
- Accept-Encoding: gzip, deflate
- User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; ...)
- Host: localhost:1997
- Content-Length: 15
- Connection: Keep-Alive
- Cache-Control: no-cache
- {"zip":"98052"}
- HTTP/1.1 200 OK
- Server: ASP.NET Development Server/8.0.0.0
- Date: Fri, 29 Dec 2006 21:06:17 GMT
- X-AspNet-Version: 2.0.50727
- Cache-Control: private, max-age=0
- Content-Type: application/json; charset=utf-8
- Content-Length: 16
- Connection: Close
- {"REDMOND", "WA"}
JSON 是一個(gè)正在嶄露頭角的行業(yè)標(biāo)準(zhǔn)序列化格式。它還是被 ASP.NET AJAX 使用的本機(jī)格式。Microsoft AJAX Library 的 Sys.Serialization.JavaScriptSerializer 類支持在客戶端進(jìn)行 JSON序列化和反序列化。System.Web.Script.Serialization.JavaScriptSerializer 類支持在服務(wù)器上進(jìn)行 JSON序列化和反序列化。
并非所有類型均與 JSON 兼容。例如,JSON 不能處理具有循環(huán)引用的對(duì)象。當(dāng)您需要返回不能與 JSON 兼容的復(fù)雜數(shù)據(jù)類型時(shí),其實(shí)您可以使用 ASP.NET AJAX 的 ScriptMethod 屬性將返回類型序列化為 XML。這個(gè)技術(shù)對(duì)返回 XML 數(shù)據(jù)的方法也很有用,如下所示:
- [ScriptMethod (ResponseFormatResponseFormat=ResponseFormat.Xml)]
- public XmlDocument GetData()
- {
- ...
- }
此外,您還可以構(gòu)建和注冊(cè)自定義 JSON 轉(zhuǎn)換器,它允許將通常不能與 JSON 兼容的類型序列化和反序列化。ASP.NET AJAX January Futures CTP 包含三個(gè)這樣的轉(zhuǎn)換器:一個(gè)針對(duì) DataSet,一個(gè)針對(duì) DataTable,還有一個(gè)針對(duì) DataRow。
【編輯推薦】