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

标签 javascript json parsing

我需要使用 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 Demo

(打开控制台)

关于javascript - JSON 解析无效字符串的有效行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25691527/

相关文章:

javascript - 为什么我的 HTML5 进度条没有随 jQuery AJAX 变化?

javascript - PHP JSON 编码对象导致 Ajax 错误

javascript - 如何通过 Mongoose 中的 $inc 增加值(value)

javascript - 将 JavaScript 变量保存到 Rails 模型

javascript - 如何从 wikipedia api 获取表数据作为行和列?

python - 同时解析,python

javascript - 如何在侧面菜单中使用 TouchableOpacity onPress?

C# FormatException double.parse(),为什么 0.89 不解析?

python - Python 3 中的 HTML 解析文本

javascript - SCEditor BBcode 到 HTML 解析