用lodash转换这个json的最佳方法

时间:2015-11-09 13:09:46

标签: javascript json node.js lodash

我从lodash开始,我需要转换这个json:

{
    "keyA": "valA",
    "keyB": [
        "valB1",
        "valB2",
        "valB3",
        "valB4",
    ],
    "keyC": [
        "valC1",
        "valC2",
        "valC3",
        "valC4",
    ],
    "...": ["...","...","...","..."],
    "keyD": "valD"
}

到这个json:

[
    {
        "keyB":"valB1",
        "keyC":"valC1"
    },
    {
        "keyB":"valB2",
        "keyC":"valC2"
    },
    {
        "keyB":"valB3",
        "keyC":"valC3"
    },
    {
        "keyB":"valB4",
        "keyC":"valC4"
    },
]

keyBkeyC和其他数组键的大小始终相同。

那些不是数组的键我必须忽略它们。

任何想法?感谢。

1 个答案:

答案 0 :(得分:1)

这样的东西?

var o = {
    "keyA": "valA",
    "keyB": [
        "valB1",
        "valB2",
        "valB3",
        "valB4",
    ],
    "keyC": [
        "valC1",
        "valC2",
        "valC3",
        "valC4",
    ],
    "keyD": "valD",
    "keyE": [
        "valE1",
        "valE2",
        "valE3",
        "valE4",
    ]
};

var r = [];

_.each(o, function(v, k) {
   if (_.isArray(v)) {
       _.each(v, function(v2, i) {
           r.length <= i && r.push({});
           r[i][k] = v2;
       });
   }
});

console.log(r);

小提琴:http://jsfiddle.net/ferahl/1rjx3tL8/