【发布时间】:2012-11-01 19:01:00
【问题描述】:
可能重复:
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/catch 的唯一方法似乎是通过正则表达式;其中一个答案中给出的正则表达式仅针对 eval 进行验证,因此像“2001-05-06”这样的简单字符串将通过正则表达式,即使它不是 JSON。
那么有没有人用好的正则表达式来验证格式良好的 JSON 字符串?
【问题讨论】:
-
使用正则表达式而不是 try/catch 正在用无效的 hack 替换正确的解决方案。
-
你为什么不想使用
try .. catch?使用起来似乎很合法,因为它在失败时会抛出异常。 -
假设有一些 JS 库在内部不使用
try/catch的情况下煞费苦心地实现了一个完全正确的 JSON 解析器——我很想知道你如何证明添加大量代码并接受性能损失这样您就不会编写使用try/catch的 3 行解决方案。这还没有考虑到更多的代码 == 更多的错误。 -
如果已经问过了,你应该按照现行规则宣传这个问题,而不是重复。
-
这是一个偏好问题。我更喜欢这样的代码:if(condition){do things}else{解释为什么你不能对用户做事}而不是 try{to do things}catch(an exception){if it failed}。我不记得我上次使用 try/catch 是什么时候了?除了处理数据库的python代码之外,如果数据库出现问题,则必须捕获错误。对我来说,在这里使用条件而不是 try 子句似乎是完全合法的。另外,为什么实现一个 json 解析器会很笨拙?克罗克斯福德的代码不正是这样吗?
标签: javascript regex json