【问题标题】:Handling errors for broken JSON处理损坏的 JSON 的错误
【发布时间】:2012-07-27 08:20:27
【问题描述】:

如果元素#the-json 为空,则会导致此错误:

Uncaught SyntaxError: Unexpected end of input

对于以下代码:

myJSON = JSON.parse($("#the-json").attr('value'));

应该如何处理这个错误,这样它才不会停止整个脚本的工作?

【问题讨论】:

    标签: javascript jquery json exception


    【解决方案1】:

    使用 try-catch 语句:

    try {
      myJSON = JSON.parse($("#the-json").attr('value'));
    } catch (e) {
      // handle error
    }
    

    或者在做某事之前检查:

    var myJSON = JSON.parse('{}'); // default value
    
    if ($("#the-json").attr('value')) {
      myJSON = JSON.parse($("#the-json").attr('value'));
    }
    

    【讨论】:

    • 将所有 javascript 包装在 try catch 中是否是一种好习惯?
    • @ami - 不是所有代码...只是您可以预测可能出现问题的部分。
    【解决方案2】:

    而不是在错误发生时捕获错误 - 首先防止错误发生! 只需测试 value 属性,如果它为空 - 明确指定它是。然后你的 JSON 解析器不会抱怨 - 它只会创建一个空对象。

    您可以简单地测试空内容并提供一个空对象 -

    var data = $("#the-json").attr('value') == ''? '{}': $("#the-json").attr('value');
    myJSON = JSON.parse(data);
    if ($.isEmptyObject(myJSON)){
      // there was no value
    }
    

    {} 语法意味着一个空的 JavaScript 对象。

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多