zoukankan      html  css  js  c++  java
  • js读取解析JSON数据

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

     
        本文主要是对JS操作JSON的要领做下总结。
     
        在JSON中,有两种结构:对象和数组。
     
        1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:
     
        var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};
     
        2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。
     
        例如:
     
        var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];
     
        为了方便地处理JSON数据,JSON提供了json.js包,下载地址:http://www.json.org/json.js
     
        在数据传输流程中,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);
     
    数据组
    var str='[{"name":"cxh","sex":"man"},{"name":"cxh1","sex":"man1"}]';
    var obj = str.parseJSON();
    alert(obj[0].name)
     
        留心:
     
        上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。
     
    在使用Ajax时若未指定预返回类型即如下:
    $.ajax({
                        type:"POST",
                        url:'${ctx}/admin/list',
                        //dataType: "json",  //不指定预返回值类型
                        success:function(data){
                           var list=data.rows;
                            //显示对象具有的属性
                            var expertAttr = ['admin_name','admin_email','description','address'];
                            for(var p in list){
                                handle(list[p],expertAttr);
                                addMarker(list[p].jd,list[p].wd,"images/reExperts.png",list[p].admin_name,list[p]);
                            }
                        }
                     });

    dataType

    类型:String

    预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。

     可用值:

    • "xml": 返回 XML 文档,可用 jQuery 处理。
    • "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
    • "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
    • "json": 返回 JSON 数据 。
    • "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
    • "text": 返回纯文本字符串

    这里不指定的清晰啊会返回为json字符串,要做json对象的话可以使用eval()函数转换。

  • 相关阅读:
    据说很少有看到第13个不笑的
    亲个嘴竟然有这么大的学问
    让人心疼的12句话,哪句说到你的痛了
    IDEAd代码注释插件使用javadoc
    连接linux里面的数据库
    代码版本管理工具,定要先更新后提交,git提交本地,推送远程
    visual studio 新特性展望假新闻
    (转)一个美国老工程师的心理话: 给年轻工程师的十大忠告
    随想一
    HongYing HtmlViewer
  • 原文地址:https://www.cnblogs.com/flytogalaxy/p/7660834.html
Copyright © 2011-2022 走看看