将JSON数据复制到数组中

时间:2016-07-28 20:50:54

标签: javascript typescript

我想从JSON文件中获取数据并将键和值对复制到数组中。 例如:

jsondata = {
    'Name': {'text': {'name': 'John'}},
    'Age': {'number': {'age': '22'}}
}

进入

array=[["Name","text","name","John"]
       ["Age","number","age","22"]]

这可能吗?

2 个答案:

答案 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)