javascript - `Unexpected token a in JSON at position 0`的解决方案

标签 javascript json node.js string web

这是我经常遇到的常见错误之一。我想知道是否有解决方案。

let a = (str) => {
    try {
        return JSON.parse(str);
    } catch (e) {
        return e;
    }
}

a() 将字符串解析为 JSON 并返回。如果我们永远不确定传递给 a() 的字符串始终是 JSON 可解析字符串怎么办?

例如:a("hello world");

这将导致

Unexpected token h in JSON at position 0

有没有一种聪明的方法可以将字符串解析为 JSON? (我的意思是,如果字符串不是 parsbale,有没有办法返回字符串。)

最佳答案

如果字符串不是 JSON,并且您希望返回该字符串,只需返回即可。

let a = (str) => {
    try {
        return JSON.parse(str);
    } catch (e) {
        // Instead of error, return str
        return str;
    }
}

JSON.parse 对于非 JSON 字符串将抛出异常。大多数 JSON 验证器执行以下操作:

function isJSON(str) {
    try {
        JSON.parse(str);
        return true;
    } catch (e) {
        return false;
    }
}

因此,您的代码完全有效,如果您期望非 JSON 字符串,则只需在出错时返回字符串即可。

无论如何,如果您的函数需要 JSON,而您收到非 JSON 字符串,则可能不应该返回相同的字符串。我会返回一个错误值或者只是让错误冒出来。

关于javascript - `Unexpected token a in JSON at position 0`的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50995046/

相关文章:

javascript - 我在同一页上有一个表格和表格,我如何使用表格来更新表格。 Express/Node.js

javascript - trim 标签中的空白而不删除内部 <input>

javascript - 使用 xpath.js NPM 模块解析 XML

安卓 : Error in parsing JSON array using GSON library

javascript - 无法字符串化为 JSON - 引发循环结构错误

node.js - 在模型中创建模型

javascript - 如何替换不在引号中的字符串

javascript - Jquery,可拖动的div不会使用Firefox在内部自动调整 Accordion 的大小

android - 如何在android中获取JsonResponse的值?

javascript - Angular.js+nw.js+webpack+karma+jasmine如何测试