首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript:将内部JSON字符串转换为JSON

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

Stack Overflow用户
提问于 2018-08-03 07:13:45
回答 2查看 157关注 0票数 0

我有一个物体

代码语言:javascript
复制
{
  "p1": "hoho",
  "p2": "haha",
  "p3": {
     "v1": "hehe",
     "v2": "{\"m1\":\"content1\", \"m2\":\"content2\"}"
  }
}

如何将其转换为:

代码语言:javascript
复制
{
  "p1": "hoho",
  "p2": "haha",
  "p3": {
     "v1": "hehe",
     "v2": {
        "m1":"content1", 
        "m2":"content2"
     }
  }
}

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

EN

回答 2

Stack Overflow用户

发布于 2018-08-03 07:22:57

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

代码语言:javascript
复制
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);

票数 1
EN

Stack Overflow用户

发布于 2018-08-03 07:41:39

另一种方法是在解析期间对其进行解析:

代码语言:javascript
复制
j = JSON.stringify({"p1":"hoho","p2":"haha","p3":{"v1":"hehe","v2":"{\"m1\":\"content1\", \"m2\":\"content2\"}"}})

o = JSON.parse(j, (k, v) => v === null ? undefined : v[0] == '{' ? JSON.parse(v) : v);

console.log( o );

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51663312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档