isJsonString('{ "Id": 1, "Name": "Coke" }')
应该是 true
的
isJsonString('foo')
isJsonString('<div>foo</div>')
应该是 false
的。
我正在寻找一种不使用 try
/ catch
的解决方案,因为我将调试器设置为“在所有错误上中断”,这会导致它在无效的 JSON 字符串上中断。
原文由 Chi Chan 发布,翻译遵循 CC BY-SA 4.0 许可协议
isJsonString('{ "Id": 1, "Name": "Coke" }')
应该是 true
的
isJsonString('foo')
isJsonString('<div>foo</div>')
应该是 false
的。
我正在寻找一种不使用 try
/ catch
的解决方案,因为我将调试器设置为“在所有错误上中断”,这会导致它在无效的 JSON 字符串上中断。
原文由 Chi Chan 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用像 JSON.parse
这样的 JSON 解析器:
function isJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
原文由 Gumbo 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
1 回答6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
先来个评论。问题是关于不使用
try/catch
。如果您不介意使用它,请阅读下面的答案。
这里我们只是使用正则表达式检查一个
JSON
字符串,它在大多数情况下都可以工作,而不是所有情况。看看 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 中的第 450 行
有一个正则表达式可以检查有效的 JSON,例如:
编辑:新版本的 json2.js 进行了比上面更高级的解析,但仍然基于正则表达式替换(来自 @Mrchief 的评论)