ajax Json 应用

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值