如何将 JSON 转换为 JS 中的属性数组,无论 JSON 的深度如何?
JSON
{
"foo": {
"bar": {
"baz": "UP"
}
}
}
键/值属性
{
"foo.bar.baz": "UP"
}
一级解决方案
我目前的代码只处理一层,而不是 n:
var user = {name: 'Corbin', age: 20, location: 'USA'},
key;
for (key in user) {
if (user.hasOwnProperty(key)) {
console.log(key + " = " + user[key]);
}
}
谢谢你:D
最佳答案
基本上,如果成员是对象,则进行递归调用,否则,更新输出对象:
data = {
foo: "hello",
bar: {
baz: {
qux: "UP"
},
spam: 'ham'
}
}
function unwrap(obj, prefix) {
var res = {};
for (var k of Object.keys(obj)) {
var val = obj[k],
key = prefix ? prefix + '.' + k : k;
if (typeof val === 'object')
Object.assign(res, unwrap(val, key)); // <-- recursion
else
res[key] = val;
}
return res;
}
console.log(unwrap(data))
关于javascript - 递归地将 JSON 对象转换为 JavaScript 中的键/值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40462533/