最近在開發Windows8 Metro App,使用JavaScript和HTML開發環境。因此操做數據綁定都是使用JSON格式數據。後臺使用的是ASP.NET,由於項目相對較小,全部後臺沒有使用數據庫,使用的XML來保存數據。前臺須要請求後臺返回JSON格式的數據,好比要求返回一個eventslist,後臺操做XML的方法省略。主要討論如何使用Hashtable和ArrayList,而後加上ASP.NET自帶的JavaScriptSerializer來生成JSON數據,而後返回給前端使用。固然目前微軟的ASP.MVC和ASP.NET Web API在處理JSON格式數據有很大的改進,特別是前端使用Ajax方式post一個json數據給服務器端,後臺反序列化一個對象,就能夠方便實現後臺的相關業務邏輯。html
代碼以下:前端
ArrayList eventList = new ArrayList();
for (int i = 0; i < 3;i++ )
{
Hashtable ht = new Hashtable();
ht.Add("eventid",i+1);
ht.Add("eventname","聖誕節");
ht.Add("eventdate","2012-12-25");
ht.Add("eventlocation","公司會議中心");
eventList.Add(ht);
}
JavaScriptSerializer ser = new JavaScriptSerializer();
String jsonStr=ser.Serialize(eventList);
Response.Write(jsonStr);
查看頁面,能夠看到返回的結果是JSON格式的數據。其實是一個數組,數組裏面每項是一個json對象。web
[{"eventdate":"2012-12-25","eventlocation":"公司會議中心","eventname":"聖誕節","eventid":1},{"eventdate":"2012-12-25","eventlocation":"公司會議中心","eventname":"聖誕節","eventid":2},{"eventdate":"2012-12-25","eventlocation":"公司會議中心","eventname":"聖誕節","eventid":3}]
咱們能夠經過這個網址驗證生成的json是否正確。http://jsonlint.com/數據庫
可是咱們須要注意的是,hashtable在存放數據時是無序的,因此數據並非按照咱們插入的前後順序顯示的。咱們可能指望的數據格式是:json
{"eventid":1","eventname":"聖誕節",eventdate":"2012-12-25","eventlocation":"公司會議中心"}數組
可是咱們查看咱們的結果不是這樣的,可是數據返回給前端以後,仍是要經過JSON.parse()方法轉換爲json對象,因此不按照特定的順序,對咱們開發不影響。服務器
數據在HTTP協議上傳輸都是使用二級制流,因此數據到達客戶端,須要經過JSON.parse()。個人項目是Windows8 Metro App,固然也能夠是網頁或者web 應用。post
固然若是前端和後臺的數據模型一致,還能夠直接經過對象實例直接序列化一個json格式數據。spa