是否可以将某些字段排除在json字符串中?
这是一些伪代码
var x = { x:0, y:0, divID:"xyz", privateProperty1: 'foo', privateProperty2: 'bar' }
我想排除privateProperty1和privateproperty2出现在json字符串中
所以我想,我可以使用stringify replacer函数
function replacer(key,value) { if (key=="privateProperty1") then retun "none"; else if (key=="privateProperty2") then retun "none"; else return value; }
并在串
var jsonString = json.stringify(x,replacer);
但是在jsonString中,我仍然将其视为
{...privateProperty1:value..., privateProperty2:value }
我想在其中没有privateproperties的字符串。
在Mozilla的文档说回报undefined(而不是"none"):
undefined
"none"
http://jsfiddle.net/userdude/rZ5Px/
function replacer(key,value) { if (key=="privateProperty1") return undefined; else if (key=="privateProperty2") return undefined; else return value; } var x = { x:0, y:0, divID:"xyz", privateProperty1: 'foo', privateProperty2: 'bar' }; alert(JSON.stringify(x, replacer));
这是一种复制方法,以防万一您决定走那条路线(根据您的评论)。
http://jsfiddle.net/userdude/644sJ/
function omitKeys(obj, keys) { var dup = {}; for (var key in obj) { if (keys.indexOf(key) == -1) { dup[key] = obj[key]; } } return dup; } var x = { x:0, y:0, divID:"xyz", privateProperty1: 'foo', privateProperty2: 'bar' }; alert(JSON.stringify(omitKeys(x, ['privateProperty1','privateProperty2'])));
编辑 -我更改了底部功能中的功能键,以免混淆。