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

访问对象message中的data数据及执行JSON.stringify时报错如何解决

问题原因

你当前的message字段存储的是不符合JSON规范的字符串:标准JSON要求所有键名、字符串类型的值都必须使用双引号包裹,而你的内容使用了单引号,因此直接调用JSON.parse解析、或者直接对非法字符串做相关JSON操作都会抛出错误。

处理方案

方案1:替换单引号为双引号后解析(推荐,无安全风险)

适合字符串内容本身不含单引号的场景:

// 原始数据结构
const response = {
  message: "{'data':{'status':'active'}}"
};

// 替换所有单引号为符合规范的双引号
const standardJsonStr = response.message.replace(/'/g, '"');
// 解析为JS对象
const result = JSON.parse(standardJsonStr);
// 访问data字段
const targetData = result.data;

// 需要序列化的话,直接对解析后的对象操作即可
const serialized = JSON.stringify(result);

方案2:使用Function构造器解析(适合内容含单引号场景,需确保内容来源安全)

如果你的字符串内部本身就包含合法的单引号内容,直接替换会破坏结构,可以用这个方案:

const response = {
  message: "{'data':{'status':'active'}}"
};

// 把字符串转为可执行的表达式返回对象
const result = new Function(`return ${response.message}`)();
const targetData = result.data;

注意:如果message的内容来源不可控,该方法存在XSS安全风险,仅可用于内容来源完全可信的场景。

内容的提问来源于stack exchange,提问作者Arunkumar Subramani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:15:04