1

我有这样的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 数组?

4

5 回答 5

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/

于 2012-11-02T06:39:48.297 回答
1

你可以这样做

以下代码的 JsFiddler Demo

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]);
});​
于 2012-11-02T06:39:39.433 回答
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]]

使用 underscorejs的一行解决方案:

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

希望能帮助到你!

于 2012-11-02T08:30:01.677 回答
-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)))​
于 2012-11-02T13:43:14.650 回答
-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。

于 2012-11-02T08:47:34.640 回答