日期:2014-05-16  浏览次数:20973 次

在ASP.NET中使用JSON

下面是在asp.net中使用JSON的步骤,
在UI层,需要添加"System.ServiceModel.Web"引用.
1.首先获得想要的数据
List<Models.Blog_albumsInfo> All_album=Bll.Blog_albums.FindAllAlbums(user_id);
2.实例化JSON对象,
var json = new DataContractJsonSerializer(typeof(List<Models.Blog_albumsInfo>), new Type[] { typeof(string) });
3.将JSON获得的数据写到上下文的响应中
json.WriteObject(context.Response.OutputStream, All_album);

在js中接收到的数据,会是这样一种形式

/**************
 
[{ "Album_fm": "1", "Album_id": 18, "Album_name": "靓照1", "Sort": 18, "User_id": 1 },

{ "Album_fm": "1", "Album_id": 17, "Album_name": "靓照7", "Sort": 17, "User_id": 1 },

{ "Album_fm": "1", "Album_id": 16, "Album_name": "靓照6", "Sort": 16, "User_id": 1 }]
 **************/

上面的形式, 已经很明了的表示了实体类每个对象的数据,只需要进行字符串处理,即可得到相应数据,

在js中,可以使用eval函数把字符串数组转换成dom对象,循环遍历即可.

//转成dom对象

var obj = eval("(" + data_arr[0] + ")");

for (var i = 0; i < obj.length; i++) {

var id = obj[i].Album_id;//相应数据

var name = obj[i].Album_name;//相应数据...
}

 

需要注意的是,以上方法,是针对VS2008,并且已经打上SP1补丁的. 如果没有打SP1补丁.还需要更多步骤

UI层添加“System.Runtime.Serialization”引用。DataContract
对实体类添加[DataContract]特性,另外对每个属性添加[DataMember]特性,其他步骤与上面相同。

 

 

asp页面js代码:

$(function () {
            $("#banjiSelect").change(function () { //当第一个下拉列表变动内容时第二个下拉列表将会显示 
                var banjiId = $("#banjiSelect").val();
                if (null != banjiId && "" != banjiId) {
                    $.getJSON("JobGetJSONHandler.ashx",{ id: banjiId }, function (myJSON) {
                        var options = "";
                        if (myJSON.length > 0) {
                            for (var i = 0; i < myJSON.length; i++) {
                                options += "<option value=" + myJSON[i].id + ">" + myJSON[i].name + "</option>";
                            }
                        }
                        else
                        {
                            options = "<option value='0' selected='selected'>请选择姓名</option>";