我想从JSON文件中获取数据并将键和值对复制到数组中。 例如:
jsondata = {
'Name': {'text': {'name': 'John'}},
'Age': {'number': {'age': '22'}}
}
进入
array=[["Name","text","name","John"]
["Age","number","age","22"]]
这可能吗?
答案 0 :(得分:2)
不使用外部库,您可以尝试:
function concatify (json) {
return typeof json == "string" ? json : Object.keys(json).reduce((x,y) => x.concat(y).concat(concatify(json[y])), []);
}
Object.keys(jsondata).map(k => [k].concat(concatify(jsondata[k])));
或
Object.keys(json).map(k => [k].concat(JSON.stringify(json[k]).replace(/["\{\}]/g,'').split(':')))
答案 1 :(得分:2)
在vanilla js中它可能是这样的:
data = {
'Name': {'text': {'name': 'John'}},
'Age': {'number': {'age': '22'}}
}
function linearize(obj) {
if (typeof obj !== 'object')
return [obj];
var res = [];
for (var key in obj) {
for (var a of linearize(obj[key])) {
res.push([key].concat(a))
}
}
return res;
}
r = linearize(data)
console.log(r)