• 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格式数据。

  • 相关阅读:
    mybatis中的配置文件的约束
    win10下PHP开发环境搭建
    装饰器的理解
    在iis上添加woff字体文件读取
    转发:使用sql命令查询视图中所有引用的基础表
    转:C4项目中验证用户登录一个特性就搞定
    转载:NSobject官方介绍
    thinkphp生命周期
    array_intersect_assoc — 带索引检查计算数组的交集
    array_flip — 交换数组中的键和值
  • 原文地址:https://www.cnblogs.com/liminjun88/p/2833153.html
Copyright © 2020-2023  润新知