【发布时间】:2018-12-02 08:25:42
【问题描述】:
这是我经常遇到的常见错误之一。我想知道是否有解决方案。
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? (我的意思是,如果字符串不是可解析的,有没有办法返回字符串。)
【问题讨论】:
-
这是个坏主意。如果不应该是 JSON 的东西碰巧看起来像 JSON,那么您的代码将严重中断(可能以涉及安全漏洞的方式)。你应该修正你的输入。
-
是的,我同意。在某些情况下,比如我请求 API 并打印正文,如果正文应该是 JSON,但由于错误而不是。例如,它在我期望 JSON 的地方返回“无效令牌”。我认为在这种情况下,最好像 Marcos 所说的那样拥有
isJSON()功能。
标签: javascript json node.js string web