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

JSON parse valid rows of invalid string

本文关键字:有效 字符串 无效 JSON      更新时间:2023-09-26

我需要用json.parse()解析一个json字符串,但有时输入不是完整的格式。例如:

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

解析显然正在崩溃。但在这种情况下,我想"保存"有效的行。

有可能吗?

以下是您可以做的:

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演示

(打开控制台)