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

如何正确解析values字段包含未转义嵌套对象的JSON字符串?

解决方案

你提供的JSON字符串报错核心原因是values字段对应的嵌套对象外层多了一对未转义的双引号,破坏了JSON的结构规范,以下是两种可直接落地的简单实现方法:

方法1:字符串修正后解析(最安全)

先通过正则替换修正错误的引号结构,再用JSON.parse正常解析,无执行风险:

let test = '{"attribute_as":"plan_id","operator":"fromTo","values":"{"from":"70","to":"80"}"}';
// 修正values字段前后多余的双引号
const fixedStr = test.replace(/"values":"\{"/, '"values":{').replace(/"\}"\}$/, '}');
const res = JSON.parse(fixedStr);
// 把values里的字符串格式数字转为数值类型,匹配目标输出格式
res.values.from = Number(res.values.from);
res.values.to = Number(res.values.to);
console.log(res);

方法2:快速解析(适配更复杂的格式错误场景)

如果待解析的串还有其他类似的嵌套引号错误,可使用new Function解析,比eval安全性更高:

let test = '{"attribute_as":"plan_id","operator":"fromTo","values":"{"from":"70","to":"80"}"}';
const res = new Function(`return ${test}`)();
// 转换数值类型
res.values.from = Number(res.values.from);
res.values.to = Number(res.values.to);
console.log(res);

两种方法最终输出的结构都和你要求的完全一致:

{
  attribute_as: 'plan_id',
  operator: 'fromTo',
  values: {
    from: 70,
    to: 80
  }
}

内容的提问来源于stack exchange,提问作者Jaroslav Klimčík

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:57:07