用JSON.stringify()转换字符串时加过滤函数只保留数值项
用JSON.stringify()
转换字符串时,我们可以加一个过滤函数,最终返回的结果只保留数值项,或某些特定内容的项。
这个功能非常好用,因为我们有时并不需要所有的字符串结果,我们更想直接得到我们想要的内容。
这就是使用了 replacer
方法。
例子(function)
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);
结果为
{“week”:45,”month”:7}
从这个结果,我们成功只保留了我们想要的内容项,把不需要的项移除了。
replacer参数
replacer
参数可以是一个函数或者一个数组。作为函数,它有两个参数,键(key)和值(value),它们都会被序列化。
在开始时, replacer
函数会被传入一个空字符串作为 key 值,代表着要被 stringify
的这个对象。随后每个对象或数组上的属性会被依次传入。
函数应当返回JSON字符串中的value, 如下所示:
- 如果返回一个 Number,转换成相应的字符串作为属性值被添加入 JSON 字符串。
- 如果返回一个 String,该字符串作为属性值被添加入 JSON 字符串。
- 如果返回一个 Boolean, “true” 或者 “false” 作为属性值被添加入 JSON 字符串。
- 如果返回任何其他对象,该对象递归地序列化成 JSON 字符串,对每个属性调用
replacer
方法。除非该对象是一个函数,这种情况将不会被序列化成 JSON 字符串。 - 如果返回 undefined,该属性值不会在 JSON 字符串中输出。
注意:不能用 replacer
方法,从数组中移除值(values),如若返回 undefined 或者一个函数,将会被 null 取代。
例子(array)
如果 replacer
是一个数组,数组的值代表将被序列化成 JSON 字符串的属性名。
JSON.stringify(foo, ['week', 'month']);
// '{"week":45,"month":7}', 只保留 “week” 和 “month” 属性值。
您可能对以下文章也感兴趣
- 15个JSON.stringify()参考示例
- 详解JSON.stringify()与JSON.parse()转换JSON对象和字符串
- 两种方法Javascript访问JSON(含嵌套)数据
- 介绍两种方法JS读取 .JSON 文件【实例演示/源码下载】
- 表单序列化插件serializeJSON.js下载及使用示例
- JQuery如何把JSON字符串转为JSON对象