这是一个简单的例子。
function Person() {
this.name = "Ted";
this.age = 5;
}
persons[0] = new Person();
persons[1] = new Person();
JSON.stringify(persons);
如果我有一个数组的Person对象,我想对它们进行字符串化。如何只返回名称变量的JSON。
原因是,我有大型对象,其中包含导致问题的递归引用。我想从stringify过程中删除递归变量和其他变量。
感谢您的帮助!
答案 0 :(得分:25)
最简单的答案是指定要进行字符串化的属性
JSON.stringify( persons, ["name"] )
另一种选择是向对象添加toJSON方法
function Person(){
this.name = "Ted";
this.age = 5;
}
Person.prototype.toJSON = function(){ return this.name };
答案 1 :(得分:17)
如果您只支持ECMAScript 5兼容环境,则可以使用Object.defineProperty()
[docs]或Object.defineProperties()
[docs]设置应排除不可枚举的属性。
function Person() {
this.name = "Ted";
Object.defineProperty( this, 'age', {
value:5,
writable:true,
configurable:true,
enumerable:false // this is the default value, so it could be excluded
});
}
var persons = [];
persons[0] = new Person();
persons[1] = new Person();
console.log(JSON.stringify(persons)); // [{"name":"Ted"},{"name":"Ted"}]
答案 2 :(得分:3)
我会创建一个新数组:
var personNames = $.map(persons,function(person){
return person.name;
});
var jsonStr = JSON.stringify(personNames);
答案 3 :(得分:-1)
see this post指定您要包含的字段。 JSON.stringify(person,[" name"," Address"," Line1"," City"]) 它比上面建议的更好!