12

簡単な例を次に示します。

function Person() {
  this.name = "Ted";
  this.age = 5;
}

persons[0] = new Person();
persons[1] = new Person();
JSON.stringify(persons);

Person オブジェクトの配列があり、それらを文字列化したい場合。name 変数のみで JSON を返すにはどうすればよいですか。

この理由は、問題を引き起こしている再帰参照を持つ大きなオブジェクトがあるためです。そして、stringify プロセスから再帰変数などを削除したいと考えています。

助けてくれてありがとう!

4

4 に答える 4

29

最も簡単な答えは、文字列化するプロパティを指定することです

JSON.stringify( persons, ["name"] )

別のオプションは、オブジェクトに toJSON メソッドを追加することです

function Person(){
  this.name = "Ted";
  this.age = 5;      
}
Person.prototype.toJSON = function(){ return this.name };

詳細: http://www.json.org/js.html

于 2012-12-30T19:03:32.583 に答える
18

ECMAScript 5 互換環境のみをサポートしている場合は、[docs]または[docs ]を使用してプロパティを設定することで、除外する必要があるプロパティを列挙不可にすることができます。Object.defineProperty()Object.defineProperties()

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"}]
于 2011-09-15T21:46:04.007 に答える
3

新しい配列を作成します。

var personNames = $.map(persons,function(person){
  return person.name;
});
var jsonStr = JSON.stringify(personNames);
于 2011-09-15T21:39:05.443 に答える
-1

この投稿を参照 して、含めたいフィールドを指定してください。JSON.stringify(person,["name","Address", "Line1", "City"]) 上記の提案よりも一致しています!

于 2015-08-23T18:50:31.747 に答える