2

JSON.stringify は任意の JavaScript 変数をテキストに変換できますか? それとも制限(機能、プロトタイプなど)はありますか?

4

4 に答える 4

5
JSON.stringify(JSON.stringify)

これは undefined を返します。JSON は関数をサポートしていません。

JSON.stringify(/JSON.stringify/)

これは戻ります"{}"。JSON.stringify は、列挙できないプロパティをスキップします。

JSON.stringify(JSON)

これは戻ります"{}"。JSON.stringify は、サポートされていない値を返すプロパティをスキップします。

JSON.stringify(JSON.JSON = JSON)

これは例外をスローします。JSON は循環参照をサポートしていません。

于 2013-06-12T17:40:13.867 に答える
2

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

未定義、関数、または XML 値が変換中に検出された場合、それらは省略されるか (オブジェクトで見つかった場合)、null に打ち切られます (配列で見つかった場合)。

于 2013-06-12T17:41:13.103 に答える
2

あなたの質問には2つの答えがあります:

  • 簡単な答え: いいえ、さまざまな反例を参照してください (DOM オブジェクト、関数など、プロンプトで自分で試してみてください)。
  • 複雑な答え: はい、JSON.stringify は、任意の JavaScript 式を任意の JSON サブ式に変換できます。大きな制限はありません。

注意点は、デフォルトではこれを行うことができず、標準化された方法でも行うことができないということです。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringifyを参照してください- 具体的にはreplacerここの引数https://developer.mozilla.org/en-US/docs/Using_native_JSON #The_replacer_parameter、次のような関数です:

function(key,value) {
    if (SPECIALLOGIC) {
        // ... return some special value
        //  like {__SPECIAL__:'datetime', value:'some_custom_encoding'}
    } else
        return value;
}
于 2013-06-12T17:52:38.077 に答える
1

制限には、例外をトリガーする循環参照を含むオブジェクトの文字列化が含まれます。

JSON.stringify(document);
// TypeError: Converting circular structure to JSON
于 2013-06-12T17:41:24.957 に答える