最近在开发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