一尘不染

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

javascript

就像是:

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

//should be true
IsJsonString(jsonString);

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

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


阅读 276

收藏
2020-04-25

共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

}
2020-04-25