在Prototype.js 1.6.x中尝试并执行
Object.toJSON([{"nodeType":1}])
它应该产生
'[{"nodeType":1}]'
作为输出字符串。然而它产生'[]'。它似乎跳过了nodeType == 1的对象。它与DOM元素有关。是否有解决方法来获得正确的输出?
jsFiddle:http://jsfiddle.net/xPVnr/
编辑:
如果obE.nodeType == 1:(
,那么看看来源似乎是jSON,如果isElement(obj)为true则返回true答案 0 :(得分: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;
};
这会解决Array toJSON与JSON.stringify的不兼容问题,并且还会保留toJSON功能,因为其他Prototype库可能依赖于它。