如何将json转换为javascript数组?

时间:2012-11-02 06:37:00

标签: javascript jquery arrays json

我有json字符串,

string js=[{"Name":"Pini","ID":"111"},

{"Name":"Yaniv","ID":"123"},

{"Name":"Yoni","ID":"145"}]

我需要使用java脚本将其转换为以下格式。

[['Pini',111],['Yaniv',123],['Yoni',145]]

如何使用javascript函数将json字符串转换为javascript数组?

5 个答案:

答案 0 :(得分:2)

我认为是这样的:

var ret = [];

for (var i = 0; i < js.length; i++) {
    ret.push([js[i].Name, js[i].ID]);
}

// ret holds your array of arrays

或类似的东西:

var ret = $.map(js, function (el, i) {
    return [[el.Name, el.ID]];
});

两者的一个例子:http://jsfiddle.net/RNY8M/

答案 1 :(得分:1)

你可以这样做

JsFiddler Demo of below code

var JSONObject = {"results":[{"Name":"Pini","ID":"111"},
                  {"Name":"Yaniv","ID":"123"},
                             {"Name":"Yoni","ID":"145"}]};


var Users= [];

$.each(JSONObject.results, function(i, obj)
       {
    alert(obj.Name);
    alert(obj.ID);
    Users.push([obj.Name, obj.ID]);
});​

答案 2 :(得分:0)

对于这种转换,我总是喜欢使用 UnderscoreJs 这是一个实用程序带库(主要用于对象/数组转换),用于Javascript。我认为它提供了强大的功能,使生活更容易,让javascript开发人员更高效,并为结果代码实现更好的易读性

这是带下划线(扩展)的解决方案:

var js=[{"Name":"Pini","ID":"111"},  
        {"Name":"Yaniv","ID":"123"},    
        {"Name":"Yoni","ID":"145"}]

var names = _.pluck(js, 'Name');
var ids = _.pluck(js, 'ID');

var result = _.zip(names, ids)

你得到了理想的结果:

[['Pini',111],['Yaniv',123],['Yoni',145]]

解决方案在一行中与下划线:

var result = _.zip(_.pluck(js, 'Name'), _.pluck(js, 'ID'))

希望它有所帮助!

答案 3 :(得分:-1)

我纠正了我的解决方案,我没有仔细阅读规范(我的错):

var jsonArray = [{"Name":"Pini","ID":"111"}, {"Name":"Yaniv","ID":"123"}, {"Name":"Yoni","ID":"145"}];

var jsonConverted = {};
$(jsonArray).each( function() {
    jsonConverted.push([ this.Name, this.ID ]);
});

此解决方案使用jQuery。

答案 4 :(得分:-1)

这是一个适用于简单对象的解决方案(不是深层对象,但是......但是我会留下来让你实现)。

http://jsfiddle.net/eUtkC/

var js = [{
    "Name": "Pini",
    "ID": "111"},
{
    "Name": "Yaniv",
    "ID": "123"},
{
    "Name": "Yoni",
    "ID": "145"}]

function obj2arr(obj) {
    var i, key, length = obj.length,
        aOutput = [],
        aObjValues;
    for (i = length - 1; i >= 0; i--) {
        aObjValues = [];
        for (key in obj[i]) {
            if (obj[i].hasOwnProperty(key)) {
                aObjValues.push(obj[i][key]);
            }
        }
        aOutput.push(aObjValues);
    }
    return aOutput;
}

document.write(JSON.stringify(obj2arr(js)))​

修改

以下是使用Array.prototype.map的版本:

http://jsfiddle.net/eUtkC/1/

function obj2arr(obj) {
    var key, aOutput = [];
    for (key in obj) {
        if (obj.hasOwnProperty(key)) {
            aOutput.push(obj[key]);
        }
    }
    return aOutput;
}

document.write(JSON.stringify(js.map(obj2arr)))​