0
我需要使用JSON.parse()解析json字符串,但有時候輸入不是完整格式。 for examle:JSON解析無效字符串的有效行
{
"x" : "x",
"x1" : "x1",
"x2" : "x2,
"x3" :
而解析正在突破。但在這種情況下,我想「保存」有效的行。
可能嗎?
我需要使用JSON.parse()解析json字符串,但有時候輸入不是完整格式。 for examle: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。
注意:此特定的代碼僅適用於具有大括號的對象,不適用於帶有方括號的數組。但是,這可能不太難實施。
您必須編寫自己的解析器。 – 2014-09-05 18:04:40
沒有。除非你想編寫你自己的解析器。 – 2014-09-05 18:04:41
沒有。 json在語法上是有效的,或者它不是json。你必須手動提取單個位,或者「修復」字符串,使其成爲有效的json。 – 2014-09-05 18:04:46