• 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>
  • 相关阅读:
    UVA 10608 Friends
    UVA 10806 Dijkstra, Dijkstra.
    HDU 3715 Go Deeper
    poj1315
    poj1383
    poj1650
    poj1265
    poj1523
    RedHat9.0虚拟机安装
    注册DirectShow filter时应该注意中文路径
  • 原文地址:https://www.cnblogs.com/genesis/p/4691489.html