JSON.parse() 方法与$.parseJSON()以及JSON.stringify()区别
2017-03-15 15:50
761 查看
1JSON.parse()
2
用于将格式完好的[b]JSON字符串转为与之对应的JavaScript对象[/b]。
所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双引号、字符串值也必须用双引号。
如果传入一个格式不"完好"的JSON字符串将抛出一个JS异常,
例如:以下字符串均符合JSON格式,但它们不是格式完好的JSON字符串(因此会抛出异常):
以下是与
[/code]
描述
关于序列化,有下面五点注意事项:
非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中。
布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。
所有以symbol为属性键的属性都会被完全忽略掉,即便
不可枚举的属性会被忽略
[code;'>JSON.stringify({})]//'{}'
JSON.stringify(true);//'true'
JSON.stringify("foo");//'"foo"'
JSON.stringify([1,"false",false]);//'[1,"false",false]'
JSON.stringify({x:5});//'{"x":5}'
JSON.stringify({x:5,y:6});
//"{"x":5,"y":6}"
JSON.stringify([newNumber(1),newString("false"),newBoolean(false)]);
//'[1,"false",false]'
JSON.stringify({x:undefined,y:Object,z:Symbol("")});
//'{}'
JSON.stringify([undefined,Object,Symbol("")]);
//'[null,null,null]'
JSON.stringify({[Symbol("foo")]:"foo"});
//'{}'
JSON.stringify({[Symbol.for("foo")]:"foo"},[Symbol.for("foo")]);
//'{}'
JSON.stringify(
{[Symbol.for("foo")]:"foo"},
function(k,v){
if(typeofk==="symbol"){
return"asymbol";
}
}
);
//undefined
//不可枚举的属性默认会被忽略:
JSON.stringify(
Object.create(
null,
{
x:{value:'x',enumerable:false},
y:{value:'y',enumerable:true}
}
)
);
JSON.parse()方法解析一个JSON字符串
参数
text要被解析成JavaSctipt值的字符串
reviver可选如果是一个函数,则规定了原始值如何被解析改造,在被返回之前。
返回值
对应给定的JSON文本。2
jQuery.parseJSON()函数
用于将格式完好的[b]JSON字符串转为与之对应的JavaScript对象[/b]。
所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双引号、字符串值也必须用双引号。
如果传入一个格式不"完好"的JSON字符串将抛出一个JS异常,
例如:以下字符串均符合JSON格式,但它们不是格式完好的JSON字符串(因此会抛出异常):
//以下均是字符串值,省略了两侧的引号,以便于展现内容 {id:1}//id是属性名称,必须加双引号 {'id':1}//id是属性名称,必须用双引号(不能用单引号) {"name":'CodePlayer'}//name属性的值是字符串,必须用双引号(不能用单引号)
以下是与
jQuery.parseJSON()函数相关的jQuery示例代码,以演示
jQuery.parseJSON()函数的具体用法:
varresult1=$.parseJSON("{}");//一个空的Object对象 varresult2=$.parseJSON('{"name":"CodePlayer","age":1}');//一个Object对象 alert(result2.name);//CodePlayer varresult3=$.parseJSON('[1,true,"CodePlayer"]');//一个Object对象 alert(result3[2]);//CodePlayer varresult4=$.parseJSON('true');//布尔值:true varresult5=$.parseJSON('null');//null varresult6=$.parseJSON('0');//整数:0 varresult7=$.parseJSON('"专注于编程开发技术分享"');//字符串值:专注于编程开发技术分享 varresult8=$.parseJSON("\"专注于编程开发技术分享\"");//字符串值:专注于编程开发技术分享 /*以下均是无效的JSON字符串或非常规的参数值*/ varresult9=$.parseJSON(100);//1.9之前返回null;1.9+返回100 varresult10=$.parseJSON(1.23);//1.9之前返回null;1.9+返回1.23 varresult11=$.parseJSON(true);//1.9之前返回null;1.9+返回true varresult12=$.parseJSON(null);//返回null varresult13=$.parseJSON("");//1.9之前返回null;1.9+抛出错误 varresult14=$.parseJSON(undefined);//1.9之前返回null;1.9+抛出错误 varresult15=$.parseJSON("undefined");//抛出错误 varresult16=$.parseJSON("12x;xx'无效的JSON字符串x4546");//抛出错误 varresult17=$.parseJSON('{name:"CodePlayer",age:1}');//抛出错误 varresult18=$.parseJSON('{"name":\'CodePlayer\',"age":1}');//抛出错误 varresult19=$.parseJSON('{"name":"Code\tPlayer\n"}');//抛出错 3JSON.stringify() [code]JSON.stringify()方法将JavaScript值转换为JSON字符串
[/code]
返回值
一个表示给定值的JSON字符串。描述EDIT
关于序列化,有下面五点注意事项:非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中。
布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。
undefined、任意的函数以及symbol值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成
null(出现在数组中时)。
所有以symbol为属性键的属性都会被完全忽略掉,即便
replacer参数中强制指定包含了它们。
不可枚举的属性会被忽略
相关文章推荐
- JSON.parse() 方法与$.parseJSON()以及JSON.stringify()区别
- textarea标签赋值、jsonp对象转string、ajax跨域访问以及JSON.stringify() 和JSON.parse()区别
- JSON.parse()与JSON.stringify()方法的使用与区别
- js中eval()和$.parse()的区别以及JSON.stringify()
- $.each 循环json以及JSON.parse() JSON.stringify() jQuery.parseJSON()的用法:
- js中eval()和$.parseJSON()的区别和联系以及JSON.stringify()
- JSON中 key 动态设置 以及JSON.parse 和JSON.stringify()的区别
- 笔记:关于JSON以及解析JSON的两种方法eval()和JSON.parse()
- JSON和JSONP的区别,以及使用方法
- JSON.parse()与JSON.stringify()的区别
- JSON.parse()和JSON.stringify()的区别
- JSON.parse()和JSON.stringify()区别
- JSON和JSONP的区别,以及使用方法
- JSON和JSONP的区别,以及使用方法
- 使用JSON.parse()和JSON.stringify()区别
- JSON.parse()和JSON.stringify()和jQuery ajax - serialize() 的方法
- 浅谈JSON.stringify()和JOSN.parse()方法的不同
- JSON相关的学习笔记,json的表示方法,eval(),parse(),stringify()方法的使用
- JSON.parse()和JSON.stringify()区别
- python安装json的方法;以及三种json库的区别