在 Prototype.js 1.6.x 中尝试一下
Object.toJSON([{"nodeType":1}])
它应该产生
'[{"nodeType":1}]'
作为输出字符串。然而它会产生“[]”。它似乎会跳过 nodeType==1 的对象。这与它们是 DOM 元素有关。有没有办法获得正确的输出?
jsFiddle:http://jsfiddle.net/xPVnr/
编辑:
查看源代码,如果 isElement(obj) 为 true,则 JSON 会返回 true,如果 obj.nodeType == 1 :(
最佳答案
使用 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;
};
这解决了数组 toJSON 与 JSON.stringify 不兼容的问题,并且还保留了 toJSON 功能,因为其他原型(prototype)库可能依赖它。
关于javascript - Prototype.js 1.6.x toJSON 行为不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848027/