仅使用JSON中的某些属性生成JS-Object的JSON

时间:2011-04-22 19:21:38

标签: javascript json

我正在从javascript对象生成JSON。但我不需要JSON中对象的所有属性。有没有办法(或图书馆)这样做?直到现在,我重写了toJSON函数并返回一个属性降低的新对象,但它是一个讨厌的解决方法,不是吗?

2 个答案:

答案 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",
    }

http://jsfiddle.net/AARMW/