亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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

原創(chuàng) 2016-11-11 14:28:23 769
摘要:最近在開發(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ù)給服務器端,后臺反序列化一個對象,就可以方便實現(xiàn)后臺的相關業(yè)務邏輯。

代碼如下:

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);

查看頁面,可以看到返回的結果是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}]

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

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

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

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

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

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


發(fā)布手記

熱門詞條