美文网首页
判断一个字符串是否是JSON字符串

判断一个字符串是否是JSON字符串

作者: wellen2000 | 来源:发表于2019-11-14 09:52 被阅读0次

    在开发过程中,我们常遇到这样的格式:"{message:'八百标兵奔北坡'}"以及"{message:'{type:'notice',title:'标兵怕把炮兵碰'}'}",这两个都是字符串,常常需要使用JSON.parse来对message这个字段进行转化为json对象.

    但是有个问题,如果要同时兼容以上两种格式的话,使用JSON.parse转译非json格式的字符串时会报错,比如:JSON.parse('八百标兵奔北坡'),那么我们需要怎么判断这个字符串是否可以转化为json对象呢?
    按一般的思路先来实现一下:

    // 先判断是不是字符串
    // 使用try-catch来捕捉错误,如果出错就判定是非json
    function isJSON(str) {
        if (typeof str === 'string') {
            try {
                JSON.parse(str);
                return true;
            } catch(e) {
                return false;
            }
        }
        console.log('非字符串!')    
    }
    

    这样是否完成了呢?
    在校验中发现,输入"123456789"这样的字符串也是可以通过的,但这个不是json啊,所以我们还需要改进一下:

    // 使用try-catch去捕捉错误
    // 直接使用JSON.parse去转译,并把转译结果判断一下是不是object类型,如果是的话就返回true,否则就返回false,这样就排除了转化后非object的类型,比如"123456789"
    function isJSON(str) {
            try {
                if (typeof JSON.parse(str) == "object") {
                    return true;
                }
            } catch(e) {
            }
            return false;
        }
    

    校验完成!

    相关文章

      网友评论

          本文标题:判断一个字符串是否是JSON字符串

          本文链接:https://www.haomeiwen.com/subject/ugrkictx.html