2017-02-13 7 views
3

JSON.stringify()メソッドは、JavaScript値をJSON文字列に変換します。オプションで置換機能が指定されている場合は値を置換します。置換配列が指定されている場合JSON.stringify(value [、replacer [、space]]

関数がreplacerパラメータとして使用されるときは、2つのパラメータが使用され、キーと値は文字列化されます。キーが見つかったオブジェクトは、Replacerのthisパラメータとして提供されます。最初は、文字列化されるオブジェクトを表す空のキーで呼び出され、文字列化されるオブジェクトまたは配列の各プロパティに対して呼び出されます。

私の質問は、この関数の最初の呼び出しの目的は何ですか?ドキュメントには、その動作や影響が記載されていません。

+0

質問を明確にするための例を挙げてください。 –

+0

彼らは慎重に便利な状態を選んだ方法面白いもの。あなたが 'key.indexOf( 'PUBLIC_')=== 0'のような何かを使うことにしたら、それはちょっと壊れてしまいます。 – Qwerty

答えて

0

MSDN on JSON.stringifyをチェックアウト:

ルートオブジェクトのキーが空の文字列であります: ""。

これは単なるルートオブジェクトです。

それはMDNについての説明と同じ意味:それは

これは、それがの最初に処理されたルートオブジェクト、ために呼び出さを取得する意味を呼び出される最初

空のキーで

それは空の文字列です。再びルートオブジェクトを意味

を文字列化されたオブジェクトを表す

オブジェクトの属性に空のキーを使用できることに注意してください。したがって、キーの空の文字列がルートオブジェクトが処理されていることを絶対に確信させるとは思わないでください。

+1

あなたのコメントをありがとうが、私はまだreplacer関数に渡されたこの空のキーが必要な理由を理解できません。このためのユースケースはありますか?オブジェクトを文字列化するために必要なプロパティと値はすべてありませんか? – samxy

+0

文字列化のために渡すオブジェクトは、属性の値ではないため、キーはありません。私は完全なパスを与えるフレームワークを好むだろう。たとえば、 'key =" .foo.bar [5] .baz ";値= 42である。パスを配列として取得するオプションを使用すると、代わりに 'key = [" foo "、" bar "、5、" baz "]'となります。 次に、ルート要素には空のキー( '" "'や '[]')だけがあります。 –