【问题标题】:Associative array values to json关联数组值到 json
【发布时间】:2012-10-12 20:21:13
【问题描述】:
我有以下 javascript 关联数组
var list = {};
list['a'] = 'one';
list['b'] = 'two';
list['c'] = 'two';
通过 jquery ajax,我只想以 json 格式传递列表数组的值。
{"list":["one","two","two"]}
我该怎么做?
【问题讨论】:
标签:
javascript
jquery
ajax
json
【解决方案1】:
您可以使用$.map() 提取值:
$.ajax({
data: {
list: $.map(list, function(val) { return val; })
},
...
});
【解决方案2】:
var list = {};
list['a'] = 'one';
list['b'] = 'two';
list['c'] = 'two';
var newObj = {
"list": []
};
for (key in list) {
newObj.list.push(list[key]);
}
alert(JSON.stringify(newObj));
Demo.
【解决方案3】:
javascript 中没有关联的数组,只有属性没有顺序的对象。这意味着如果您想构建它们的数组,您需要先对属性进行排序:
var list = {a:'one', b:'two', c:'two'};
var result = {list:[]},
keys = [];
for (var key in list)
keys.push(key);
keys.sort();
for (var i=0; i<keys.length; i++)
result.list[i] = list[keys[i]];
return JSON.stringify(result);
或者使用一些辅助函数也一样,可能并非所有浏览器都原生支持:
return {list: Object.keys(list).sort().map(function(key) { return list[key]; })};