zoukankan      html  css  js  c++  java
  • 使用Jquery解析Json

    利用原生JSON对象,将对象转为字符串

    [javascript] view plaincopy

    1. var jsObj = {};  
    2. jsObj.testArray = [1,2,3,4,5];  
    3. jsObj.name = 'CSS3';  
    4. jsObj.date = '8 May, 2011';  
    5. var str = JSON.stringify(jsObj);  
    6. alert(str); 

    从JSON字符串转为对象

    [javascript] view plaincopy

    1. var jsObj = {};  
    2. jsObj.testArray = [1,2,3,4,5];  
    3. jsObj.name = 'CSS3';  
    4. jsObj.date = '8 May, 2011';  
    5. var str = JSON.stringify(jsObj);  
    6. var str1 = JSON.parse(str);  
    7. alert(str1); 

    转:http://blog.csdn.net/starrexstar/article/details/8083259

     

    先明确2个概念例如:

    JSON字符串:

    var str1 = '{ "name": "deyuyi", "sex": "man" }';

    JSON对象:

    var str2 = { "name": "deluyi", "sex": "man" };

    可以简单这样理解:

    JSON对象是直接可以使用JQuery操作的格式,如C#中可以用对象(类名)点出属性(方法)一样;

    JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用,除非你只想alert()他;

    一、JSON字符串转换为JSON对象

    要使用上面的str1,必须使用下面的方法先转化为JSON对象:

    A:eval函数

    eval函数可以直接将本质符合或者近似符合JSON格式的字符串转换为JSON对象,使用方式如:

    eval('(' + str + ')'); //其中str就是满足本标题描述的字符串

    复制代码

        //由JSON字符串转换为JSON对象
        var str='{ "name": "John" }';
        var obj = eval('(' + str + ')'); 
        alert( obj.name);
    
        var str2="{ 'name': 'John' }";
        var obj2 = eval('(' + str2 + ')'); 
        alert( obj2.name);
    
        var str3="{ name: 'John' }";
        var obj3 = eval('(' + str3 + ')'); 
        alert( obj3.name);

    复制代码

    以上均会输出结果“john”。

    Eval方式可以转换以下标准和非标准格式字符串:

       var str="{ 'name': 'John' }";
       var str2='{ "name": "John" }';
       var str3="{ name: 'John' }";

    参见本例下载包中:JqueryDemo1.html

    B:parseJSON函数

    另一种将标准字符串转换为JSON对象的函数是parseJSON(),使用方式如jQuery.parseJSON(str)//其中str就是满足本标题描述的字符串

        //由JSON字符串转换为JSON对象
        var str='{ "name": "John" }';
        var obj = jQuery.parseJSON(str)
        alert("1"+ obj.name);

    以上均会输出结果“john”。

    此种方式仅支持标准格式:var str='{ "name": "John" }';

    参见本例下载包中:JqueryDemo2.html

    C:JSON.parse函数

    还有一种将标准字符串转换为JSON对象的函数是JSON.parse(),使用方式如JSON.parse(str)//其中str就是满足本标题描述的字符串

            var str = '{ "name": "mady", "age": "24" }';
            var obj = JSON.parse(str);
            alert(obj.name);

    以上均会输出结果“john”。

    此种方式仅支持标准格式:var str='{ "name": "John" }';

    参见本例下载包中:JqueryDemo3.html

    以上结果一致,均输出姓名,如下图:

    clip_image002

    特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。

    二、将JSON对象转换为字符串

    可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。

    例如:

    var last=obj.toJSONString(); //将JSON对象转化为JSON字符

    或者

    var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

    alert(last);

    三、解析读取JSON

    我们通过各种方式将字符串转换为JSON对象后就是解析他了。

    如上面的例子:

          var str2 = { "name": "mady", "sex": "man" };

    就可以这样读取:

          alert(str2.name);//和C#一样直接往出点…

    弹出” mady”。

    我们遇到的JSON很少有这么简单的,比如复杂一点的JSON对象如:

          var str={"GetUserPostByIdResult":{"Age":"33","ID":"2server","Name":"mady"}};

    解析用:

          alert(str.GetUserPostByIdResult.Name);//一次点不出来,我多点几次

    弹出:”mady”。

    再再复杂一点的如:

          var data=" { root: [ {'name':'6200','value':'0'}, {'name':'6101','value':'xa'}, {'name':'6102','value':'beijing'}, {'name':'6103','value':'haerbin'}]}";

    如果你想单挑的话,解析用:

          alert(dataObj.root[0].name);

    弹出:“6200”。

    如果你想群挑的话,解析用:

          $.each(dataObj.root, function(index, item) {
                $("#info").append(
                        "<div>" +index+":"+ item.name + "</div>" + 
                        "<div>" +index+":"+ item.value + "</div><hr/>");
            });

    其中这个“#info”是个DIV的ID。输入结果如下图:

    clip_image006

    参见本例下载包中:JqueryDemo4.html

    注意:本例如果要使用其他转换函数请更改字符串内单引号为双引号,外引号为单引号。

    本文章所有代码:点击下载

    转:http://www.cnblogs.com/madyina/p/3448518.html

  • 相关阅读:
    线程同步(二)—— 条件变量
    线程同步(一)—— 互斥锁
    进程同步(四)—— 消息队列
    Nginx反向代理服务器的配置
    散列表(hash表)
    浅谈bitmap
    进程空间分配和堆栈大小
    拓扑排序
    归并排序
    快速排序
  • 原文地址:https://www.cnblogs.com/qingyizhishi/p/4482818.html
Copyright © 2011-2022 走看看