300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > jquery parseJSON()方法解析json字符串

jquery parseJSON()方法解析json字符串

时间:2019-08-02 17:47:21

相关推荐

jquery parseJSON()方法解析json字符串

在web项目开发中,前端经常需要接收后端传送来的json数据,解析json字符串,再对页面进行渲染。使用jquery解析json字符串通常需要将json字符串转化为javascript的json对象(如果使用getjson()方法则不用,得到到就是json对象)。通常使用$.parseJSON()方法解析json字符串,也可以使用eval()方法。两者的区别是,parseJSON()不会解析错误格式的json字符串,而eval则会解析任意字符串,所以eval()是不安全的。

那么接下来我们就来看看如何使用$.parsejson()解析json字符串:

使用一段标准json字符串做为测试用例

{

“name”: “jack”,

“age”: 11,

“sex”: “man”,

“phone”: 28770

}

js代码:

$(function(){var data = "{\"name\":\"jack\" ,\"age\": 11, \"sex\": \"man\" ,\"phone\":288770}"; //双引号转义var jsondata = $.parseJSON(data);console.info(jsondata);console.info("姓名:"+jsondata.name);console.info("年龄:"+jsondata.age);console.info("性别:"+jsondata.sex);console.info("电话:"+jsondata.phone);});

我们通过chorm浏览器控制台查看打印的结果:

可以看到,var jsondata = $.parseJSON(data)这行代码将json字符串转化为了一个Object对象,json字符串内的键名成为了Object对象的属性名,我们就可以使用jsondata.name这样的形式来获取对应的值。

如果我们解析的json字符串是json数组的形式,则有所不同,如:

json数组字符串:

[{

“name”: “jack”,

“age”: 11,

“sex”: “man”,

“phone”: 28770

},

{

“name”: “tom”,

“age”: 11,

“sex”: “man”,

“phone”: 28771

},

{

“name”: “marry”,

“age”: 11,

“sex”: “woman”,

“phone”: 28772

}

]

var jsondata = $.parseJSON(data);console.info(jsondata);console.info("姓名:"+jsondata[0].name);console.info("年龄:"+jsondata[0].age);console.info("性别:"+jsondata[0].sex);console.info("电话:"+jsondata[0].phone);

打印的结果为一个数组,数组的每一个元素都是一个Object对象,我们取值时就要写成jsondata[0].name的形式。

最后再来看看parseJSON的源码(中文是自己注释的):parseJSON: function( data ) {//如果参数为空或参数类型不是string,则返回nullif ( !data || typeof data !== "string") {return null;}// Make sure leading/trailing whitespace is removed (IE can't handle it)data = jQuery.trim( data );//去掉字符串首尾空格// Attempt to parse using the native JSON parser first//使用浏览器提供的解析json函数解析json字符串if ( window.JSON && window.JSON.parse ) {return window.JSON.parse( data );}// Make sure the incoming data is actual JSON// Logic borrowed from /json2.js/*使用正则表达式判断json字符串格式是否正确rvalidchars = /^[\],:{}\s]*$/,rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-? (?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g*/if ( rvalidchars.test( data.replace( rvalidescape, "@" ).replace( rvalidtokens, "]" ).replace( rvalidbraces, "")) ) {//使用原生的js Function()方法解析json字符串return ( new Function( "return " + data ) )();}jQuery.error( "Invalid JSON: " + data );}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。