我有一个物体
{
"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。
发布于 2018-08-03 07:22:57
您可以编写一个简单的递归函数来尝试扩展对象(如果它是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);
发布于 2018-08-03 07:41:39
另一种方法是在解析期间对其进行解析:
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 );
https://stackoverflow.com/questions/51663312
复制相似问题