我有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数组?
答案 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)
你可以这样做
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)
这是一个适用于简单对象的解决方案(不是深层对象,但是......但是我会留下来让你实现)。
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)))