JSON.stringify(value [,replacer] [,space])
必需。要转换的 JavaScript 值(通常为对象或数组)。
可选。用于转换结果的函数或数组。
如果replacer为函数,则JSON.stringify将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回undefined,则排除成员。根对象的键是一个空字符串:""。
如果replacer是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当value参数也为数组时,将忽略replacer数组。
可选。向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。
如果省略space,则将生成返回值文本,而没有任何额外空格。
如果space是一个数字,则返回值文本在每个级别缩进指定数目的空格。如果space大于 10,则文本缩进 10 个空格。
如果space是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。
如果space是长度大于 10 个字符的字符串,则使用前 10 个字符。
返回一个包含 JSON 文本的字符串。
JSON.stringify()、eval()都是用来解析字符串并将字符串转换为json数据
var jsonData = '{"data1":"Hello,",
var evalJson=eval('('+jsonData+')');
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行
var jsonParseJson=JSON.parse(jsonData);
这样就把json格式的字符串转化为json对象但二者解析是由区别的
var value = 1;
var jsonstr = '{"data1":"hello","data2":++value}';
var data1 = eval_r('('+jsonstr+')');console.log(data1);//这时value值为2
而var data2=JSON.parse(jsonstr);console.log(data2);//报错
总结:eval在解析字符串时,会执行该字符串中的代码(这样的后果是相当恶劣的),
如上例中,由于用eval解析一个json字符串而造成原先的value的值改变这是极其不安全的,
所以推荐使用JSON.parse()来解析字符串。