JSON.parse() Chrome/Firefox differences



我遇到了一个非常奇怪的问题,关于JSON.parse()函数的返回错误:我使用这个函数来验证我从基于web的编辑器检索的JSON字符串。该字符串使用JSON.stringify()函数进行预操作。更准确地说应该是:

JSON.stringify(data, null, 4)

因此,当我使用Firefox (v107.0.1)时,如果出现格式错误的字符串,我可以显示错字的行号和列号,但当我使用Chrome (v107.0.5304.87)时,无法识别行。

我认为这是一个JS引擎问题,但我想知道是否有办法解决这个问题。

感谢
  • 测试不同浏览器版本
  • 更改字符串格式

浏览器之间的异常可能是特定于实现的。

但是如果你想要一个更健壮的JSON解析器,你可以使用JSON5,用这些行号等,应该在浏览器之间保持一致。

如. .

console.log('Incorrect JSON');
//with error
try {
var a = JSON5.parse(`
{
hello: 'there'x
}`);
console.log(a);
} catch (e) {
console.log('JSON error at', e.lineNumber, e.columnNumber);
}
console.log('Valid JSON');
//corrected
try {
var a = JSON5.parse(`
{
hello: 'there'
}`);
console.log(a);
} catch (e) {
console.log('JSON error at', e.lineNumber, e.columnNumber);
}
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>

最新更新