可能重复:
How to check if a string is a valid JSON string in JavaScript without using Try/Catch
这里已经提出了这个问题:How to check if a string is a valid JSON string in JavaScript without using Try/Catch。没有给出有效答案,即使经过验证的答案没有回答这个问题。
所以似乎使用try / catches不这样做的唯一方法是通过regexps;其中一个答案中给出的正则表达式只是针对eval进行验证,所以像“2001-05-06”这样的简单字符串会传递正则表达式,即使它不是JSON。
有没有一个好的正则表达式来验证格式良好的JSON字符串?
答案 0 :(得分:2)
使用正则表达式而不是try / catch正在用非工作黑客替换正确的解决方案。
您提供的链接建议更改您可以修改的JSON parsing code以不抛出异常。我建议在json_parse.js中替换以下代码
error = function (m) {
// Call error when something is wrong.
throw {
name: 'SyntaxError',
message: m,
at: at,
text: text
};
},
通过调用您将提供的回调。
但坦率地说,我最合理的建议是使用try / catch 。这是你在这里最好的工具。请注意,我的JSON.parse修改“建议”假设管理所有循环/递归的中断,这正是异常所做的。
答案 1 :(得分:0)
来自link试试这个
var jsonData = '{"1":"test"}';
if (/^[\],:{}\s]*$/.test(jsonData.replace(/\\["\\\/bfnrtu]/g, '@'). replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
alert('ok');
}else{
alert('no');
}