2011-04-22 51 views
0

我从javascript对象生成JSON。但是我不需要JSON中的对象的所有属性。有没有办法(或图书馆)做到这一点?到目前为止,我重写了toJSON函数并返回了一个新属性的对象,但它是一个令人讨厌的解决方法,不是吗?在JSON中仅生成一些JS对象的JSON

+0

这是一个非常讨厌的解决办法,可惜我不能想别的在这种情况下做的。 – thinkdevcode 2011-04-22 19:27:37

回答

2

接受第二个参数,即“replacer”函数,您可以使用它来排除某些属性。

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}" 
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); 

- >

filteredObject: { 
     firstname: "bryce", 
     lastname: "nesbitt", 
    } 

http://jsfiddle.net/AARMW/