ASP.NET輸出JSON格式數據


最近在開發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數據給服務器端,后台反序列化一個對象,就可以方便實現后台的相關業務邏輯。

代碼如下:

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對象。

[{"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在存放數據時是無序的,所以數據並不是按照我們插入的先后順序顯示的。我們可能期望的數據格式是:

{"eventid":1","eventname":"聖誕節",eventdate":"2012-12-25","eventlocation":"公司會議中心"}

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM