如何获取 JSON stringify 的错误消息?

Posted

技术标签:

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

假设我有一个这样的对象

var obj = 
"name": "arun"
age

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

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

【问题讨论】:

***.com/questions/6041741/… 为什么不使用 try catch? ***.com/questions/4467044/… 【参考方案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));

【讨论】:

以上是关于如何获取 JSON stringify 的错误消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何 JSON.stringify 对象数组

循环引用阻止 jsonwebtoken.sign JSON.stringify 的原因

Firebase 云消息传递 - 发布消息说 JSON 有效负载无效

JSON.stringify()执行出错是如何产生的?

在nodejs中 Object的toString()方法 querystring的stringify() JSON.stringify()

JSON.stringify 抛出错误