【问题标题】:How to get the error message for JSON stringify?如何获取 JSON stringify 的错误消息?
【发布时间】:2016-06-07 19:49:33
【问题描述】:

假设我有一个这样的对象

var obj = {
"name": "arun"
age
}

当我尝试 JSON.stringify(obj) 时,我会收到一个错误,因为 obj 不正确。我想捕获控制台中显示的错误并将其显示在 UI 中。

stringify 函数有没有回调功能,这样我就可以做上面的事情了?

【问题讨论】:

标签: javascript json


【解决方案1】:

首先认为有syntax error,在"name": "arun"之后需要添加,

我们无法以编程方式获取语法错误。 纠正这个语法错误后,你可以这样检查

try{

   var obj = {
     "name": "arun",
     age
   }

 } catch(e){
   console.log(e);// you can get error here
}

【讨论】:

    【解决方案2】:

    在这里,您不会从 JSON.stringify 中得到错误。

    一旦你尝试创建这个对象,你就会得到一个错误。

    var obj = {
      name: "Arun"  // you're missing a comma
      age //this is valid, as long as `age` exists as a variable above this point, in new browsers
    };
    

    在所有浏览器中,只要你运行这部分脚本,它就会抛出一个 SyntaxError,因为你缺少逗号。

    如果您重新添加了该逗号,并且上面确实存在 age

    var age = 32;
    var obj = {
      name: "Arun",
      age
    };
    

    这现在可以在全新的浏览器中正常工作,但在旧浏览器中会再次引发 SyntaxError。

    该对象的旧兼容版本如下所示:

    var age = 32;
    var obj = {
      name: "Arun",
      age: age
    };
    

    您遇到的问题似乎不是.stringify 会崩溃。 根据您提供的对象,您的陈述是错误的,句号。

    【讨论】:

    • 我知道对象有问题,我想验证那个有问题的 json 对象并告诉对象的第 3 行有一个错误。有什么办法吗?
    • @ArunMohan 如果您在 JavaScript 中声明它,它不是 JSON 对象。 var obj = { ]; 不是 JSON,它是 JS。它会在您尝试将其放入stringify 之前爆炸。如果您将其下载为 JSON 文本,那是非常不同的事情,然后您不会使用 stringify,而是使用 parse 将字符串转换为 JS 对象。你是什​​么意思?
    【解决方案3】:

    你可以试试下面的方法:

    var age = 34;
    ar obj = { name: "arun", age }
    console.log(JSON.stringify(obj));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-18
      • 2020-06-23
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      相关资源
      最近更新 更多