JSON.stringify() 和 JSON.parse()

2016-04-01  本文已影响60人  火星X王子

这是两个大家都常用的JSON处理函数,但是它们还有的详细参数,是很少知道的,先摘录一下火狐开发者官网的说明:

JSON.stringify(value[, replacer[, space]])

第二个参数叫replacer,干嘛的呢,用来替换和筛选value中的值的,来个例子:

function replacer(key, value)
 { 
    if (typeof value === "string")
    { return undefined; } 
    return value;
}
  var foo = {foundation: "Mozilla", model:  "box", week: 45, 
  transport:"car", month: 7};
  var jsonString = JSON.stringify(foo, replacer);

这段程序呢,就可以把非字符串部分转化成JSON,
space就是加空格的,不解释了,还有一个对象的toJSON函数,可以定义更具体的行为。

parse也有类似的行为:

JSON.parse(text[, reviver])

reviver
可以对每一个键值对进行改变,类似map:

var obj=JSON.parse('{"1": 1, "2": 2, "3": 3}', function(k, v) 
    {if (k === '') { return v;}    
        return v*2;
    });

注意第一句,if (k === '') { return v;} 这句是终止条件,因为reviver最后会被一个空字符串调用,因此直接返回v,其他操作会出现各种问题!

上一篇下一篇

猜你喜欢

热点阅读