ajax Json 应用

来源:互联网 发布:内蒙古大学图书馆软件 编辑:程序博客网 时间:2024/05/29 07:51

1)Json基础
2)Json 字符串和Json对象
3)应用例子
4)JsonHelper

1)Json 基础
JSON中对象通过"{}"来标识,一个"{}"代表一个对象,如{"AreaId":"123"},
对象的值是键值对的形式(key:value)。
 "[]",标识数组,数组内部各个数据之间通过","分割,如["AreaId":"123","AreaId":"345"]。
很多情况下是对象数组,那就是这样: [{"AreaId":"123"},{"AreaId":"345"}]
数组也是一个对象 {"Area":[{"AreaId":"123"},{"AreaId":"345"}]} 这表示一个Area对象,
他有两个子数据,每个子数据也是一个对象,每个子对象都是AreaId。

2)Json字符串和Json对象
json字符串:Var strJSON = "{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}",
其实也可以写成这样:Var strJSON = ‘{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}',
这表示一个JSON字符串,由于在Js中单引号和双引号都可以表示一个字符串,所以上面第一个使用双引号和第二个使用单引号的都表示一个JSON字符串。
字符串的时候就要用eval转化成jquery对象,代码如下:
var arr = '{"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}}';var dataObj = eval("("+arr+")");//转换Json对象  $.each(dataObj,function(idx,item){      //输出     alert(item.id+"哈哈"+item.name);   })


Json对象:Var JSON = {"Area":[{"AreaId":"123"},{"AreaId":"345"}]},JSON对象最外面是没有单引号或者双引号的,这就表示一个JSON对象。
Json对象不需要转化,代码如下:
var arr = {"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}};  $.each(arr,function(idx,item){        //输出   alert(item.id+"哈哈"+item.name);})
3)应用例子
前台JS:将传递过来的数据直接解析为json数据,也就是说这里的前台js代码可能直接把这些数据解析成json对象数据,而并非字符串数据,
如data[0].demoData,这里就直接使用了这个json对象数据。
$.ajax({            type: "post",                                         url: "Default.aspx",                                         dataType: "json",                                         success: function (data) {                                                 alert(data[0].demoData);                                        },                                         error: function (XMLHttpRequest, textStatus, errorThrown) {                                                 alert(errorThrown);                                         }                                 });
后台代码:
<span style="white-space: pre;"></span>Response.Clear();                         Response.Write("[{"demoData":"This Is The JSON Data"}]");                         Response.Flush();                         Response.End();
  
4)JsonHelper应用
   public class UserClass    {        public string Name { set; get; }        public string sex { set; get; }    }     
//应用
        public string MyAjax2(string val1)        {                var strJSON = "[{\"name\":\"name1\",\"sex\":\"man\" },{\"name\":\"name2\",\"sex\":\"woman\" }]";                List<UserClass> list =  DeserializeUserList(strJSON);                foreach (var item in list)                {                    var name=item.name;
<span style="white-space:pre"></span>  var sex=item.sex;                 }            return "ok";        }
//直接将Json转化为实体对象        public List<UserClass> DeserializeUserList(string json)        {            var u = JsonHelper.JSONToObject<List<UserClass>>(json);            return u;        }

//JsonHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Script.Serialization;using System.Data;namespace MvcAspxMovie.Models{/// <summary> /// JSON帮助类 /// </summary> public class JsonHelper{    /// <summary>     /// 对象转JSON     /// </summary>     /// <param name="obj">对象</param>     /// <returns>JSON格式的字符串</returns>     public static string ObjectToJSON(object obj)    {        JavaScriptSerializer jss =new JavaScriptSerializer();        try        {            return jss.Serialize(obj);        }        catch(Exception ex)        {            throw new Exception("JSONHelper.ObjectToJSON(): "+ ex.Message);        }    }    /// <summary>     /// 数据表转键值对集合 www.2cto.com      /// 把DataTable转成 List集合, 存每一行     /// 集合中放的是键值对字典,存每一列     /// </summary>     /// <param name="dt">数据表</param>     /// <returns>哈希表数组</returns>     public static List<Dictionary<string,object>>DataTableToList(DataTable dt)    {        List<Dictionary<string,object>> list             =new List<Dictionary<string,object>>();        foreach(DataRow dr in dt.Rows)        {            Dictionary<string,object> dic =new Dictionary<string,object>();            foreach(DataColumn dc in dt.Columns)            {                dic.Add(dc.ColumnName, dr[dc.ColumnName]);            }            list.Add(dic);        }        return list;    }    /// <summary>     /// 数据集转键值对数组字典     /// </summary>     /// <param name="dataSet">数据集</param>     /// <returns>键值对数组字典</returns>     public static Dictionary<string,List<Dictionary<string,object>>>DataSetToDic(DataSet ds)    {        Dictionary<string,List<Dictionary<string,object>>> result =new Dictionary<string,List<Dictionary<string,object>>>();        foreach(DataTable dt in ds.Tables)            result.Add(dt.TableName,DataTableToList(dt));        return result;    }    /// <summary>     /// 数据表转JSON     /// </summary>     /// <param name="dataTable">数据表</param>     /// <returns>JSON字符串</returns>     public static string DataTableToJSON(DataTable dt)    {        return ObjectToJSON(DataTableToList(dt));    }    /// <summary>     /// JSON文本转对象,泛型方法     /// </summary>     /// <typeparam name="T">类型</typeparam>     /// <param name="jsonText">JSON文本</param>     /// <returns>指定类型的对象</returns>     public static T JSONToObject<T>(string jsonText)    {        JavaScriptSerializer jss =new JavaScriptSerializer();        try        {            return jss.Deserialize<T>(jsonText);        }        catch(Exception ex)        {            throw new Exception("JSONHelper.JSONToObject(): "+ ex.Message);        }    }    /// <summary>     /// 将JSON文本转换为数据表数据     /// </summary>     /// <param name="jsonText">JSON文本</param>     /// <returns>数据表字典</returns>     public static Dictionary<string,List<Dictionary<string,object>>>TablesDataFromJSON(string jsonText)    {        return JSONToObject<Dictionary<string,List<Dictionary<string,object>>>>(jsonText);    }    /// <summary>     /// 将JSON文本转换成数据行     /// </summary>     /// <param name="jsonText">JSON文本</param>     /// <returns>数据行的字典</returns>     public static Dictionary<string,object>DataRowFromJSON(string jsonText)    {        return JSONToObject<Dictionary<string,object>>(jsonText);    }}}

0 0