JSON.stringify有一个特性,通过定义一个名为toJSON的函数,使对象能够定义自己的序列化。
以下是MDN文档的摘录:
toJSON()行为 如果一个被字符串化的对象有一个名为toJSON的属性,其值是一个函数,那么toJSON()方法将自定义stringification行为:而不是被序列化的对象,toJSON()方法在调用时返回的值将被序列化。
是否有一种方法来覆盖它,这样即使有附加的toJSON方法,它也会忽略它们并进行“正常”序列化吗?
原因:由于一个JS库,在我的环境中引入了一些toJson方法,它们有一些小错误。其中一些错误的序列化格式已经被接受,服务器端被编码成这种格式。
因此,我被困在不能删除buggy的方法,但是我想提示JSON.stringify忽略那些前进的方法。
发布于 2017-03-20 13:25:00
您可以重写该方法:
var fn = JSON.stringify;
JSON.stringify = function (o) {
var tmp, toJSON;
if(o.toJSON){
toJSON = o.toJSON;
o.toJSON = undefined;
}
tmp = fn.apply(this, arguments);
toJSON && (o.toJSON = toJSON);
return tmp;
};发布于 2017-03-20 13:18:11
如果对象中的toJSON属性为空,它将返回默认行为。
obj.toJSON = null;如果您不想修改您的对象,您可以在此之前复制它。
var copy = Object.assign({}, obj);
obj.toJSON = null;https://stackoverflow.com/questions/42904463
复制相似问题