判断是否为json

开发技巧中写了判断是否为json:

Object.prototype.isJSON = function(v) {
    if(typeof v==='object' && Object.prototype.toString.call(v).toLowerCase()==='[object object]' && !v.length) {
        return true;
    }
    return false;
}
console.log(Object.isJSON({})); // true

这个函数有问题,首先,这个例子就不对。随便一个普通对象都可以输出true。

Object.isJSON({a:1})//true

其次,修改 Object.prototype 是不推荐的,因为这可能会导致与其他代码库的冲突,特别是当这些库或框架不期望 Object.prototype 被修改时。

我平时使用的方案是用json解析,能解析,就是json,用try/catch包裹起来。
下面是文心一言的方案:

function isLikelyFromJSON(obj) {  
    try {  
        const jsonString = JSON.stringify(obj);  
        const parsedObj = JSON.parse(jsonString);  
        return deepEqual(obj, parsedObj); // 需要一个deepEqual函数来比较对象是否相等  
    } catch (e) {  
        return false; // 如果无法序列化或解析,则假定不是来自JSON的对象  
    }  
}
PS:写作不易,如要转裁,请标明转载出处。
%{ comment.page.total }条评论

猜你想看

微信小程序:前端开发宝典

最近文章
工具操作
  • 内容截图
  • 全屏
登录
注册
回顶部