区别
JSON.stringify
把对象序列化变成 字符串
JSON.parse
把字符串变成 Json对象
eval("("+date+")")
相当于JSON.parse(a); 把字符串变成 Json对象,转换出来的结果都是json对象
eval(date)
相当于eval(("("+date+")") ),有些格式的字符串会转换失败 前端报错
举例
<script>
var obj={"草莓":"ww","苹果":"qq"};//这是个对象
var obj1='{"草莓":"ww","苹果":"qq"}';//这是个字符串
var str = "";
for(var key in this.obj){
str+= key+":"+
this.obj[key] +";";
}
var a=JSON.stringify(obj);//把对象序列化变成 字符串
var b=JSON.parse(a); // 把字符串变成 Json对象
var skuProps = eval("("+a+")"); //相当于JSON.parse(a); 把字符串变成 Json对象
// var skuProps1 = eval(a); //会报错 SyntaxError: Unexpected token ':'
console.log(obj);
console.log(obj1);
console.log("----");
console.log("obj类型"+typeof(obj));
console.log("obj1类型"+typeof(obj1));
console.log("----");
console.log("str:"+str);
console.log("str类型"+typeof(str))
console.log("----");;
console.log("a:"+a);
console.log("a类型"+typeof(a));
console.log("----");
console.log("b是");
console.log(b);
console.log("b类型"+typeof(b));
console.log("----");
console.log("skuProps是");
console.log(skuProps);
console.log("skuProps类型"+typeof(skuProps));
console.log("skuProps1类型"+typeof(skuProps1));
console.log("----");
</script>
控制台输出结果
eval("("+data+")")可以将"{“name”:“123”}“和”[{“name”:“123”}]"两种格式的字符串转换为json对象。
var strJson1="{"name":"123"}";
var strJson2="[{"name":"123"}]";
var json1=eval("("+strJson1+")");
var json3=eval("("+strJson2+")");
结果
eval(data)是不能将"[{“name”:“123”}]"这种格式的字符串转换为json对象的,会报错误:Uncaught SyntaxError: Unexpected token ‘:’