JavaScript:将内部 JSON 字符串转换为 JSON

标签 javascript

我有一个对象

{
  "p1": "hoho",
  "p2": "haha",
  "p3": {
     "v1": "hehe",
     "v2": "{\"m1\":\"content1\", \"m2\":\"content2\"}"
  }
}

如何将其转换为:

{
  "p1": "hoho",
  "p2": "haha",
  "p3": {
     "v1": "hehe",
     "v2": {
        "m1":"content1", 
        "m2":"content2"
     }
  }
}

问题最多是将嵌套的 JSON 字符串内部对象转换为 JSON。

最佳答案

您可以编写一个简单的递归函数来尝试扩展对象(如果是 JSON):

var data = {
  "p1": "hoho",
  "p2": "haha",
  "p3": {
     "v1": "hehe",
     "v2": "{\"m1\":\"content1\", \"m2\":\"content2\"}"
  }
}

function jsonExpand(obj) {
  for (var k in obj) {
    if (!obj.hasOwnProperty(k))
      continue;       // skip this property
      
    if (typeof obj[k] == "object" && obj[k] !== null) {
      jsonExpand(obj[k]);
    } else {
      try {
        obj[k] = JSON.parse(obj[k]);
      } catch (e) {
        // Not able to be parsed
      }
    }
  }
}

jsonExpand(data);

console.log(data);

关于JavaScript:将内部 JSON 字符串转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51663312/

相关文章:

javascript - 使用 json 值在 Angularjs 中自动完成

javascript - 在 Vite2 中,如何在 tailwind.config.js 中导入 ESModule

javascript - dhtmlx 时间线跳过几周而不是跳过周末到星期一

javascript - 更改文本框时如何将 Javascript 事件处理程序绑定(bind)到 Ajax Control Toolkit 组合框

javascript - 发送整个对象只是为了更新状态?

javascript - 使用 jQuery 查找特定文本,然后将类添加到以下 UL

javascript - 如何编写 Jest 测试脚本来检查常量的值

javascript - setTimeout逻辑没有被调用

javascript - 从属性中获取数据并用它来替换其他文本

javascript - 当滚动到达某个点时事件无限次触发