我有这样的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 数组?
我有这样的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 数组?
我认为是这样的:
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/
你可以这样做
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]);
});
对于这种转换,我总是更喜欢使用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'))
希望能帮助到你!
这是一个适用于简单对象的解决方案(虽然不是深层对象....但我将把它留给您实现)。
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
:
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)))
我更正了我的解决方案,我没有很好地阅读规格(我的错):
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。