1. ホーム
  2. javascript

[解決済み] Prototype.jsでJSON.stringify()配列の異形性

2023-06-10 15:03:18

質問

私は、私のjsonシリアライゼーションで何がうまくいかなかったのかを見つけようとしています。私のアプリの現在のバージョンと古いバージョンを持っており、JSON.stringify()が動作する方法でいくつかの驚くべき違いを見つけています(json.orgからのJSONライブラリを使っています)。

私のアプリの古いバージョンでは

 JSON.stringify({"a":[1,2]})

はこれを与えてくれます。

"{\"a\":[1,2]}"

を新しいバージョンで表示します。

 JSON.stringify({"a":[1,2]})

はこれを与えてくれます。

"{\"a\":\"[1, 2]\"}"

新しいバージョンでは、同じライブラリが配列の括弧を引用符で囲むようになったのですが、何が変わったのでしょうか?

どのように解決するのですか?

JSON.stringifyは最近いくつかのブラウザで出荷されているので、PrototypeのtoJSONの代わりにこれを使うことをお勧めします。そして、window.JSON && window.JSON.stringify をチェックし、それ以外の場合は json.org ライブラリをインクルードするだけです(via document.createElement('script') ...). 非互換性を解決するには、使用します。

if(window.Prototype) {
    delete Object.prototype.toJSON;
    delete Array.prototype.toJSON;
    delete Hash.prototype.toJSON;
    delete String.prototype.toJSON;
}