zoukankan      html  css  js  c++  java
  • json解析

              什么是JSON?

             JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#JavaJavaScriptPerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。 

             JSON  VS   XML:
        1.JSON和XML的数据可读性基本相同
        2.JSON和XML同样拥有丰富的解析手段
        3.JSON相对于XML来讲,数据的体积小
        4.JSON与JavaScript的交互更加方便
        5.JSON对数据的描述性比XML较差
        6.JSON的速度要远远快于XML

    使用Jquery解析Json基础知识

     

    前言

    在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换、JSON数据的解析是关键。

    先明确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()函数处理后会有问题(抛出语法异常)。

    D:Other方式

    如果忍不住想犯错,十分十分想解析非标准、非正规字符串,如:

          {name:mady,age:23}

    或者

          {name:’mady’,age:23}

    以及其他的你能想到的各种本质正确的非法格式,那么有扩展库可以解决

    jquery-json 扩展库

    下载地址在这里:http://code.google.com/p/jquery-json/

    这个库用来扩展 jQuery ,对于 JSON 的使用,扩展了两个函数:toJSONparseJSON

    toJSON 函数用来将一个普通的 JavaScript 对象序列化为 JSON 对象。

    parseJSON函数用来将一个普通的 JavaScript 对象序列化为 JSON 对象too。

    复制代码
          var data=$.toJSON({ x: 2, y: 3 }); 
          var obj = jQuery.parseJSON(data); 
          alert(obj.x); 
          var str = {plugin: 'jquery-json', version: 2.3}; 
          var data2=$.toJSON(str); 
          var obj2 = jQuery.parseJSON(data2); 
          alert(obj2.plugin);
    复制代码

    以上代码执行结果如:

    imageclip_image004

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

    二、将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

    js 将json字符串转换为json对象的方法解析

    将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键

    例如:

    JSON字符串:
    var str1 = '{ "name": "cxh", "sex": "man" }'; 
    JSON对象:
    var str2 = { "name": "cxh", "sex": "man" };

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

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

    //由JSON字符串转换为JSON对象

    var obj = eval('(' + str + ')');

    或者

    var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

    或者

    var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

    然后,就可以这样读取:

    Alert(obj.name);

    Alert(obj.sex);

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

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

    例如:

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

    或者

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

    alert(last);

    注意:

    上面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。

    PS:还提供了几款功能十分强大的json解析、转换与格式化工具供大家选择使用,相信对于大家接下来的json格式数据处理会有所帮助:

    在线JSON代码检验、检验、美化、格式化工具:
    http://tools.jb51.net/code/json

    在线XML/JSON互相转换:
    http://tools.jb51.net/code/xmljson

    json代码在线格式化/美化/压缩/编辑/转换工具:
    http://tools.jb51.net/code/jsoncodeformat

    C语言风格/HTML/CSS/json代码格式化美化工具:
    http://tools.jb51.net/code/ccode_html_css_json

    转自:http://www.cnblogs.com/guoziyi/p/6003752.html


    不建议使用eval()函数,因为eval()接受任意的字符串,并当作JavaScript代码来处理,这个机制已经有安全隐患了
    var str='{ "name": "John" }';
    var obj = eval ('(' + str + ')');
    alert(obj.nam);

    $.parseJSON()和JSON.parse()函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象。所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双引号、字符串值也必须用双引号。其次,JSON标准不允许字符串中出现"控制字符",正确写法应该是使用两个反斜杠,以免被JS解析器直接转义。

    1、JSON字符串转换为JSON对象
    var str='{ "name": "John" ,"age": "24" }';
    var obj = $.parseJSON(str);
    alert(obj.name); //John

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

    2、将JSON对象转换为字符串
    var obj={name: "John", age: "24"};
    var last=JSON.stringify(obj);
    alert(last); //'{name: "John", age: "24"}'

    var obj={name: "John", age: "24"};
    var last=obj.toJSONString();
    alert(last); //'{name: "John", age: "24"}'

    3、解析读取json对象
    var str={
    "result":{
    "age":"33",
    "id":"2server",
    "name":"mady"
    }
    };
    alert(str.result.age); //33

    var result = $.parseJSON( '[ 1, true, "CodePlayer" ]' );
    alert( result[1] ); // CodePlayer

    var result = $.parseJSON( ""专注于编程开发技术分享"" );
    alert(result); //专注于编程开发技术分享

     http://www.json.org/json-zh.html

  • 相关阅读:
    [WPF系列] window自定义
    [WPF系列]-Prism+EF
    C#基础-事件 继承类无法直接引发基类的事件
    [WPF系列] 高级 调试
    [WPF系列]-DynamicResource与StaticResource的区别
    [WPF系列]-DataBinding 绑定计算表达式
    [WPF系列]- Style
    [WPF系列]-基础 TextBlock
    [WPF系列]-ListBox
    [WPF系列]-DataBinding 枚举类型数据源
  • 原文地址:https://www.cnblogs.com/liuhongxia/p/6657914.html
Copyright © 2011-2022 走看看