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

如何解析包含字符串化JSON值的JavaScript对象?

解决对象中嵌套字符串化JSON的解析问题

你需要遍历对象的所有属性,对每个属性值尝试JSON解析——能成功解析的(即原本是字符串化JSON的)就替换为解析后的对象,解析失败的(普通字符串或其他基本类型)保持原样。

具体实现代码

function parseNestedJson(obj) {
  // 处理非对象/数组的基本类型
  if (typeof obj !== 'object' || obj === null) {
    try {
      return JSON.parse(obj);
    } catch (e) {
      // 解析失败,返回原内容
      return obj;
    }
  }

  // 处理数组
  if (Array.isArray(obj)) {
    return obj.map(item => parseNestedJson(item));
  }

  // 处理对象
  const parsedObj = {};
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
      parsedObj[key] = parseNestedJson(obj[key]);
    }
  }
  return parsedObj;
}

使用示例

先修正你原对象的语法错误(c属性末尾缺少逗号),再调用函数:

let obj = {
   a: "apple",
   b: 2,
   c: '{"p":"11","q":"22","r":{"x":"aa","y":"bb"}}',
   d: "3"
};

const result = parseNestedJson(obj);
console.log(result.c); // 输出:{ p: '11', q: '22', r: { x: 'aa', y: 'bb' } }
console.log(result.a); // 输出:"apple"(普通字符串保留原样)

逻辑说明

这个函数会递归遍历对象的所有层级:

  • 对每个值尝试JSON.parse,如果是合法的字符串化JSON,就替换为解析后的对象/数组;
  • 如果解析失败(比如普通字符串、数字等),就直接返回原内容,不会破坏原有数据。

内容的提问来源于stack exchange,提问作者Siva rama krishna Bethu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:00:47