将JSON对象转换为新结构化JSON对象的最简单方法是什么?

时间:2010-11-30 21:14:04

标签: javascript jquery json

我有一个结构如下的JSON对象:

{
    "xaxis": [
        "foo",
        "bar",
        "baz"
    ],
    "yaxis": [
        333,
        992,
        1365
    ]
}

从中我想创建另一个这样的JSON对象:

{ 
    "piegraph": [
        ["foo",333], 
        ["bar",992], 
        ["baz",1365]
    ] 
}

在客户端JavaScript中进行此转换可以节省我的额外开发和另一个服务器往返,以获取基本相同的数据。

如果有帮助,我可以使用jQuery库。

6 个答案:

答案 0 :(得分:2)

您可以使用Functional JavaScript

second = { piegraph: Functional.zip([first.xaxis, first.yaxis]) };

答案 1 :(得分:1)

为什么你不能只使用for循环?

for(var i = 0; xaxis.length; i++){
  piegraph.push({xaxis[i], yaxis[i]);
}

答案 2 :(得分:1)

假设您的第一个 JSON字符串已经解析为一个对象,您只需要迭代两个数组中的任何一个的元素,以构建结果:

var result = { piegraph: [] }; // initialize piegraph as an empty array

var l = obj.xaxis.length;
while(l--) {
  result.piegraph[l] = [ obj.xaxis[l], obj.yaxis[l] ];
}

// result will look like this:
// {"piegraph":[["foo",333],["bar",992],["baz",1365]]}

不需要库,只需一个简单的顺序循环。 ;)

答案 3 :(得分:1)

这不难手动,但underscore.js函数库有一堆非常方便的函数,包括.zip()

var piegraph = _.zip( obj.xaxis, obj.yaxis );

答案 4 :(得分:0)

看起来你想要对两个阵列进行成对匹配(也称为“压缩”)。

答案 5 :(得分:0)

假设x轴和y轴的array1和array2以及resultArray,即“piegraph”

jQuery.map(array1, function(item, i){
    resultArray.push(new Array(array[item, array2[i]));
}
});