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