一、在页面js代码中,字符串和javascript对象的转换:
1、JSON.parse(str) :用于从一个字符串中解析出json对象,如(ie浏览器不支持)
var str = \'{"name":"huangxiaojian","age":"23"}\'
var rs=JSON.parse(str);
结果:
Object
age: "23"
name: "huangxiaojian"
__proto__: Object
2、jQuery.parseJSON()函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象。
所谓"格式完好":
就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双引号、字符串值也必须用双引号。
a:如果传入一个格式不"完好"的JSON字符串将抛出一个JS异常,例如:以下字符串均符合JSON格式,但它们不是格式完好的JSON字符串(因此会抛出异常):
// 以下均是字符串值,省略了两侧的引号,以便于展现内容:
{id: 1} // id是属性名称,必须加双引号
{\'id\': 1} // id是属性名称,必须用双引号(不能用单引号)
{"name": \'CodePlayer\'} // name属性的值是字符串,必须用双引号(不能用单引号)
b:JSON标准不允许字符串中出现"控制字符",例如:一个Tab或换行符。
$.parseJSON(\'{"name": "Code\tPlayer\n"}\'); // 多数情况下,它会抛出一个错误,因为JS解析器会将字符串中的\t或\n等转义直接视作字面值,起到Tab或换行的效果。
//正确写法应该如下(使用两个反斜杠,以免被JS解析器直接转义\t或\n):
$.parseJSON(\'{"name": "Code\\tPlayer\\n"}\');
var str = \'[{"href":"baidu.com","text":"test","orgId":123,"dataType":"curry","activeClass":"haha"}]\';
var rs=jQuery.parseJSON(str);
将json串转换为js对象:通过对象.key可以获取对应的值:
var url=rs.href=baidu.com;
3、JSON.stringify(a) 用于将一个对象转换为字符串,如
var a = {a:1,b:2}
var rs=JSON.stringify(a);
结果:
"{"a":1,"b":2}"
4、JSON.parse()和jQuery.parseJSON()的区别:
有的浏览器不支持JSON.parse()方法,使用jQuery.parseJSON()方法时,在浏览器支持时会返回执行JSON.parse()方法的结果,
否则会返回类似执行eval()方法的结果,以上结论参考jquery 1.9.1 得出。