小编典典

如何在不使用 Try/Catch 的情况下检查字符串是否是 JavaScript 中的有效 JSON 字符串

all

就像是:

var jsonString = '{ "Id": 1, "Name": "Coke" }';

//should be true
IsJsonString(jsonString);

//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")

解决方案不应包含 try/catch。我们中的一些人打开了“中断所有错误”,他们不喜欢调试器中断那些无效的 JSON 字符串。


阅读 141

收藏
2022-03-03

共1个答案

小编典典

先来个评论。 问题是关于不使用try/catch.
如果您不介意使用它,请阅读下面的答案。这里我们只是JSON使用正则表达式检查一个字符串,它在大多数情况下都可以工作,而不是所有情况。

看看https://github.com/douglascrockford/JSON-js/blob/master/json2.js中的第 450

有一个正则表达式可以检查有效的 JSON,例如:

if (/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

  //the json is ok

}else{

  //the json is not ok

}

编辑 :新版本的 json2.js 进行了比上面更高级的解析,但仍然基于正则表达式替换

2022-03-03