国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ASP.NET輸出JSON格式數(shù)據(jù)

Original 2016-11-11 14:28:23 765
abstract:最近在開發(fā)Windows8 Metro App,使用JavaScript和HTML開發(fā)環(huán)境。所以操作數(shù)據(jù)綁定都是使用JSON格式數(shù)據(jù)。后臺使用的是ASP.NET,因為項目相對較小,所有后臺沒有使用數(shù)據(jù)庫,使用的XML來保存數(shù)據(jù)。前臺需要請求后臺返回JSON格式的數(shù)據(jù),比如要求返回一個eventslist,后臺操作XML的方法省略。主要討論如何使用Hashtable和ArrayList,然后加上AS

最近在開發(fā)Windows8 Metro App,使用JavaScript和HTML開發(fā)環(huán)境。所以操作數(shù)據(jù)綁定都是使用JSON格式數(shù)據(jù)。后臺使用的是ASP.NET,因為項目相對較小,所有后臺沒有使用數(shù)據(jù)庫,使用的XML來保存數(shù)據(jù)。前臺需要請求后臺返回JSON格式的數(shù)據(jù),比如要求返回一個eventslist,后臺操作XML的方法省略。主要討論如何使用Hashtable和ArrayList,然后加上ASP.NET自帶的JavaScriptSerializer來生成JSON數(shù)據(jù),然后返回給前端使用。當然目前微軟的ASP.MVC和ASP.NET Web API在處理JSON格式數(shù)據(jù)有很大的改進,特別是前端使用Ajax方式post一個json數(shù)據(jù)給服務(wù)器端,后臺反序列化一個對象,就可以方便實現(xiàn)后臺的相關(guān)業(yè)務(wù)邏輯。

代碼如下:

ArrayList eventList = new ArrayList();            
            for (int i = 0; i < 3;i++ )
            {
                Hashtable ht = new Hashtable();
                ht.Add("eventid",i+1);
                ht.Add("eventname","圣誕節(jié)");
                ht.Add("eventdate","2012-12-25");
                ht.Add("eventlocation","公司會議中心");
                eventList.Add(ht);
            }
            JavaScriptSerializer ser = new JavaScriptSerializer();
            String jsonStr=ser.Serialize(eventList);
            Response.Write(jsonStr);

查看頁面,可以看到返回的結(jié)果是JSON格式的數(shù)據(jù)。實際上是一個數(shù)組,數(shù)組里面每項是一個json對象。

[{"eventdate":"2012-12-25","eventlocation":"公司會議中心","eventname":"圣誕節(jié)","eventid":1},
{"eventdate":"2012-12-25","eventlocation":"公司會議中心","eventname":"圣誕節(jié)","eventid":2},
{"eventdate":"2012-12-25","eventlocation":"公司會議中心","eventname":"圣誕節(jié)","eventid":3}]

我們可以通過這個網(wǎng)址驗證生成的json是否正確。http://jsonlint.com/

但是我們需要注意的是,hashtable在存放數(shù)據(jù)時是無序的,所以數(shù)據(jù)并不是按照我們插入的先后順序顯示的。我們可能期望的數(shù)據(jù)格式是:

{"eventid":1","eventname":"圣誕節(jié)",eventdate":"2012-12-25","eventlocation":"公司會議中心"}

但是我們查看我們的結(jié)果不是這樣的,但是數(shù)據(jù)返回給前端之后,還是要通過JSON.parse()方法轉(zhuǎn)換為json對象,所以不按照特定的順序,對我們開發(fā)不影響。

數(shù)據(jù)在HTTP協(xié)議上傳輸都是使用二級制流,所以數(shù)據(jù)到達客戶端,需要通過JSON.parse()。我的項目是Windows8 Metro App,當然也可以是網(wǎng)頁或者web 應(yīng)用。

當然如果前端和后臺的數(shù)據(jù)模型一致,還可以直接通過對象實例直接序列化一個json格式數(shù)據(jù)。


Release Notes

Popular Entries