【发布时间】:2019-03-04 10:47:18
【问题描述】:
我从需要解析和修改一个属性值的 API 收到一个 json。问题是,我收到的 json 数据的嵌套结构不一致,我无法控制它。
这将禁止我指定在特定深度下查看,例如 parsedJson.children[0].property,因为我正在寻找的属性可以在不同的嵌套级别上找到,例如 parsedJson.children[0].children[ 0].property 在下一次迭代中。
我目前就是这样做的,效果很好
var parsedJson = JSON.parse('{"a":[{"a1":[{"p":0},{"np":1}]}],"b":[{"p":0},{"np":1}],"c":[{"c1":[{"c2":[{"p":0}]},{"np":1}]}]}')
console.log("before modify")
console.log(parsedJson)
modifyProperty(parsedJson,"p",1);
function modifyProperty(obj,prop,val){
for (var key in obj){
if (key == prop){
obj[key] = val;
}
modifyProperty(obj[key],prop,val);
}
}
console.log("after modify")
console.log(parsedJson)
但我担心以后,如果我从 API 收到一个包含更多数据和更深嵌套级别的 json,它可能会影响性能,因为这需要递归地逐个检查所有子节点。
有没有更好/更快的方法?
【问题讨论】:
-
那么,我相信您的担忧是围绕 for 循环?而且,不是 JSON 解析……对吗?
标签: javascript json