网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发 > jQuery

parseJSON(data)和JSON.parse(data)用法详解

2022/1/11 15:41:31

parseJSON(data)和JSON.parse(data)用法详解 在将json字符串转换为JavaScript对象时,我们经常会用到parseJSON(data)和JSON.parse(data)两个方法,今天我们就来聊聊2者的具体用法。 「解析」将JSON格式的字符串转化成JSON对象(JS对象值)的过程。也称为「…

        在将json字符串转换为JavaScript对象时,我们经常会用到parseJSON(data)和JSON.parse(data)两个方法,今天我们就来聊聊2者的具体用法。

  • jQuery的 $.parseJSON(data) 

        jQuery的$.parseJSON(data) 方法接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript 值。

  var jsonObj = $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),将JSON字符串反序列化成JSON对象

举例说明  

  $(document).ready(function(){
        
          //双引号转义
          //var data = "{\"name\":\"chunlynn\" ,\"age\": 27, \"sex\": \"man\" ,\"qq\":\"277539687\"}"; 
          //单引号放在最外面,就不用转义了,数字类型不用加引号  
          var data = '{"name":"chunlynn" ,"age": 27, "sex": "man" ,"qq":"277539687"}'; 
          var jsondata = $.parseJSON(data);
          console.info(jsondata);
          console.info("姓名:"+jsondata.name);
          console.info("年龄:"+jsondata.age);
          console.info("性别:"+jsondata.sex);
          console.info("qq:"+jsondata.qq); // console.info("qq:"+jsondata["qq"]);也行
          console.info("age的JS类型: "+ typeof jsondata.age);
          console.info("qq的JS类型: "+ typeof jsondata.qq);
     
});

image.png

        可以看到,var jsondata = $.parseJSON(data)这行代码将JSON字符串转化为了一个Object对象,JSON字符串内的键名成为了Object对象的属性名,我们就可以使用 jsondata.name 或者 jsondata["name"] 这样的形式来获取对应的值。同时可以看到属性的类型,age为number类型,qq为string类型。

  • JSON.parse(jsonstr)

        只支持IE8/Firefox3.5+/Chrome4/Safari4/Opera10 以上版本,这些浏览器都已经接近W3C标准,默认实现了JSON.parse(jsonstr)方法。 

        这个浏览器默认实现了的方法,本来是JSON官方的api,ECMA-262(E3)/ECMAScript E3中没有将JSON概念写到标准中,在 ECMAScript5中JSON的概念被正式引入了,包括全局的JSON对象。

举例说明

$(document).ready(function(){
            var data = '[{"name":"chunlynn","age": 27,"qq":"277539687"},{"name":"linda" ,"age": 25,"qq":"123456789"}]';  //同上放在一行
            var jsondata = JSON.parse(data);
            console.info(jsondata);
            console.info("姓名:"+jsondata[0].name);
            console.info("年龄:"+jsondata[0].age);
            console.info("qq:"+jsondata[0].qq);
            console.info("qq:"+jsondata[0]["qq"]);
             console.info(jsondata instanceof Array);  //true
             console.info("jsondata[0]的JS类型: "+ typeof jsondata[0]);
                  console.info("age的JS类型: "+ typeof jsondata[0].age);  //number
             console.info("qq的JS类型: "+ typeof jsondata[0].qq);  //string
});

image.png

        可以看到,JSON对象已经被序列化成JSON字符串了。类型为string了。

        注意:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json3.js。

         json.js已淘汰,json2.js正在淘汰中...,这个两个json包现在不建议使用了,建议使用json3.js。

  • 结论总结

        1、如果要使用 JSON.parse(str)方法转换JSON,建议引入json3.js包,因为低版本的浏览器中没有实现本地的JSON.parse(str)。

        2、推荐用jQuery的$.parseJSON(jsonstr)来解析JSON字符串为JSON对象(JS对象)。请传入正确的JSON字符串,因为传入格式有误的 JSON 字符串可能导致抛出异常。从jQuery 3.0开始,不推荐使用$.parseJSON。 要解析JSON字符串,请改用原生的 JSON.parse 方法。

        3、不管用哪个方法解析JSON字符串,都要求指定的字符串必须符合严格的JSON格式。例如:属性名称必须加双引号、字符串值也必须用双引号。否则可能会抛出异常。

        通过以上内容我们对parseJSON(data)和JSON.parse(data)两个方法有了更深的了解,感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

    暂无相关的数据...