javascript – 解析错误的JSON,并能够显示错误的位置

前端之家收集整理的这篇文章主要介绍了javascript – 解析错误的JSON,并能够显示错误的位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这不是关于如何管理或更正错误JSON,它是关于如何向用户解释错误错误的JSON中的错误.

有没有办法找出解析器失败的JSON中的哪个位置.

我想在一个node.js应用程序中解决这个问题,所以请尽可能的保留你的答案在该域.

当我使用内置的JSON对象和解析方法为一个有问题的JSON我只得到异常消息语法错误:意外的字符串.我想知道发生错误的地方.

首选将是返回结果ok / error和错误位置的JSON.validate(json).这样的东西

var faultyJsonToParse = '{"string":"value","boolean": true"}';
var result = JSON.validate(faultyJsonToParse);
if (result.ok == true) {
   console.log('Good JSON,well done!');
} else {
   console.log('The validator found a \'' + result.error + '\' of type \'' + result.errorType + '\' in your JSON near position ' + result.position);
}

上述想要的结果是:

The validator found a 'SyntaxError' of type 'Unexpected string' in your JSON near position 35.

解决方法

尝试 jsonLint
var faultyJsonToParse = '{"string":"value","boolean": true"}';

try {
    jsonlint.parse(faultyJsonToParse)
} catch(e) {
    document.write('<pre>' + e)
}

结果:

Error: Parse error on line 1:
...ue","boolean": true"}
-----------------------^
Expecting 'EOF','}',',']',got 'undefined'

(虽然jsonLint是一个节点项目,它也可以在web中使用:只需抓取https://github.com/zaach/jsonlint/blob/master/web/jsonlint.js)

正如@ eh9所建议的,在标准json解析器周围创建一个包装器来提供详细的异常信息是有意义的:

JSON._parse = JSON.parse
JSON.parse = function (json) {
    try {
        return JSON._parse(json)
    } catch(e) {
        jsonlint.parse(json)
    }
}

JSON.parse(someJson) // either a valid object,or an meaningful exception

猜你在找的JavaScript相关文章