1

Prototype.js 1.6.x で試してみてください

Object.toJSON([{"nodeType":1}])

それは譲るべき

'[{"nodeType":1}]'

出力文字列として。ただし、「[]」が生成されます。nodeType==1 を持つオブジェクトをスキップするようです。それらがDOM要素であることと関係があります。正しい出力を取得するための回避策はありますか?

jsFiddle: http://jsfiddle.net/xPVnr/

編集:

ソースを見ると、 toJSON は、 isElement(obj) が true の場合に返されるだけで、 obj.nodeType == 1 の場合に true になります:(

4

1 に答える 1

0

JSON.stringify を使用しますが、次の微調整を行って正しい出力を取得します (配列の場合):

var _json_stringify = JSON.stringify;
JSON.stringify = function(value) {
    var _array_tojson = Array.prototype.toJSON;
    delete Array.prototype.toJSON;
    var r=_json_stringify(value);
    Array.prototype.toJSON = _array_tojson;
    return r;
};

これにより、JSON.stringify との Array toJSON の非互換性が処理され、他の Prototype ライブラリが依存する可能性がある toJSON 機能も保持されます。

于 2013-01-02T05:12:46.493 に答える