Json简介与转换数据例子

Json是什么,Json就是javascript对象或者数组格式的字符串,Http协议不能传递JavaScript对象,所以要转换为字符串进行传输。
AJAX传递复杂数据如果自己进行格式定义的话会经历组装、解析的过程,因此AJAX中有一个事实上的数据传输标准JSon。Json(是一个标准,就像XML一样,Json规定了对象以什么样的格式保存为一个字符串)将复杂对象序列化为一个字符串,在浏览器端再将字符串反序列化为JavaScript可以读取的对象。Json被几乎所有语言支持。Json就是一个把对象(js、java、.net)表示为字符串的标准。
JavaScript对象(键值对) var person= {name:'rupeng',age:8};
JavaScript数组:var names = ['rupeng','qq','taobao'];
JavaScript对象数组:var persons = [{name:'rupeng',age:8}, {name:'qq',age:15}, {name:'taobao',age:10}];
JavaScript对象关联:var p = {name:'yzk',child:{name:'timi',age:1}};

如何把json字符串转换为js对象:var obj = eval("a("+data+")")。举例:普通对象、数组、对象数组、多对象关联。
(*)安全性问题,如果不用jquery,新版浏览器都原生支持JSON.parse,不支持的引用json2.js也就可以了
C#中将.Net对象序列化为Json字符串的方法:JavaScriptSerializer().Serialize(p)。.Net对象→json字符串→JavaScript对象。
JavaScriptSerializer在System.Web.Extensions.dll中。Json.Net
C#中的匿名类: var p = new { Id=5,Name="rupeng"} 通过反编译看到其实还是生成一个类。

ashx代码:

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/html";
    //序列化字符串数组
    string[] strs = { "www.rupeng.com", "www.baidu.com", "www.qq.com" };
    JavaScriptSerializer jss = new JavaScriptSerializer();
    string json = jss.Serialize(strs);
    context.Response.Write(json);

    //序列化匿名类
    var p = new { ID = 0, Name = "syfpc", Height = 180 };
    JavaScriptSerializer jss = new JavaScriptSerializer();
    string json = jss.Serialize(p);
    context.Response.Write(json);

    //序列化List集合
    List<string> list = new List<string>();
    list.Add("aaa");
    list.Add("bbb");
    list.Add("ccc");
    JavaScriptSerializer jss = new JavaScriptSerializer();
    string json = jss.Serialize(list);
    context.Response.Write(json);
}

javascript代码:

<script type="text/javascript">
    $(function () {
        MyAjax("JsonTest.ashx",
        function (resTxt) {
            var strs = eval("(" + resTxt + ")");
            //alert(strs.Name);//获取类的value值
            for (var i = 0; i < strs.length; i++) {
                alert(strs[i]);
            }
        }, function (status) {

        }
        )
    });
</script>
原文地址:https://www.cnblogs.com/genesis/p/4691489.html