JSON解析无效字符串的有效行

时间:2014-09-05 18:02:25

标签: javascript json parsing

我需要使用JSON.parse()解析json字符串,但有些时候输入不是完整格式。为考试:

{
    "x" : "x",
    "x1" : "x1",
    "x2" : "x2,
    "x3" :

解析明显破裂。但在这种情况下,我想"保存"有效的行。

有可能吗?

1 个答案:

答案 0 :(得分:1)

以下是您可以做的事情:

String.prototype.safeParser = function(){
    try{
        var that=this;
        return JSON.parse(this);
    }
    catch(err){
        if(this.length<3){
            return {};
        }
        else if(this.charAt(this.length - 1) == "}"){
            that = this.substring(0, this.length - 2) + "}";
        }
        else{
            that = this.substring(0, this.length - 1) + "}";
        }
        return that.safeParser();
    }
}

并像console.log(json_string.safeParser());

一样使用它

它检查字符串是否有效json,如果不是,它看起来是否以花括号结束,它一次删除一个字符,直到它是有效的json。

注意:此特定代码仅适用于带花括号的对象,而不适用于带方括号的数组。但是,这可能不会太难实现。

JS Fiddle Demo

(打开你的控制台)