You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何代码生成的内容不是JSON对象?JSON校验函数返回false

问题分析:JSON校验函数返回false的原因

嘿,我来帮你拆解下这个问题!先还原下你的场景:

你通过这段代码生成了一个错误对象:

const name = error.name || null; 
const time = new Date().toLocaleString(); 
const message = error.message || error.toString(); 
const errorToSend = { name, time, message }; 
return errorToSend; 

然后调用这个自定义的JSON校验函数,结果返回了false:

IsJsonString(str) { 
  try { 
    JSON.parse(str); 
  } catch (e) { 
    return false; 
  } 
  return true; 
} 

核心问题所在

这个问题的根源特别直接:你传给IsJsonString的是一个JavaScript对象(errorToSend),但这个函数的设计目的是校验JSON格式的字符串。

当你把JS对象直接丢给JSON.parse()时,函数会自动把对象转成字符串——结果就是"[object Object]",这完全不是有效的JSON格式,所以JSON.parse()会抛出异常,函数也就返回false了。

怎么解决?

如果你想用这个函数校验你的错误对象是否能被序列化为合法JSON,你需要先把对象转换成JSON字符串,再传给函数:

const jsonStr = JSON.stringify(errorToSend);
const isValid = IsJsonString(jsonStr); // 现在会返回true啦

要是你其实是想判断这个值是不是一个合法的JS普通对象(而非JSON字符串),那这个函数就不适用了,可以换个判断逻辑:

function isPlainObject(obj) {
  return typeof obj === 'object' && obj !== null && Object.prototype.toString.call(obj) === '[object Object]';
}

内容的提问来源于stack exchange,提问作者Emenpy Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:19:25