我正在从javascript对象生成JSON。但我不需要JSON中对象的所有属性。有没有办法(或图书馆)这样做?直到现在,我重写了toJSON函数并返回一个属性降低的新对象,但它是一个讨厌的解决方法,不是吗?
答案 0 :(得分:2)
JSON.stringify
接受第二个参数,即“替换”功能,您可以使用它来排除某些属性。
var exclude = { 'akey': true };
var obj = { 'akey': 2, 'anotherkey': 3 };
JSON.stringify(obj, function (key, value) {
if(exclude[key]) return undefined;
return value;
});
=> "{'anotherkey':3}"
答案 1 :(得分:0)
很有趣我只是编写了一些代码来执行此操作(使用对象),然后您可以对目标进行序列化。
// sorta like $.extend but limits to updating existing properties
// from a template. takes any number of objects to merge.
function mergeObjects(template) {
var obj={};
if (arguments) {
for (var i = 0; i < arguments.length; i++) {
newObj = arguments[i];
for (var prop in template) {
if (newObj.hasOwnProperty(prop)) {
obj[prop] = newObj[prop];
}
}
}
}
return obj;
}
使用此函数的方法是使用具有所需属性的模板对象,例如
var template = {
firstname: '',
lastname: ''
}
var someObject = {
firstname: "bryce",
lastname: "nesbitt",
title: "ubergeek"
}
var filteredObject = mergeObjects(template,someObject);
- &GT;
filteredObject: {
firstname: "bryce",
lastname: "nesbitt",
}