我有一个对象

{
  "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字符串内部Object转换为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 - JavaScript:将内部JSON字符串转换为JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51663312/

10-17 03:02