我使用datatables.net jQuery插件来处理ajax表。我想发送一个带有JSON数据的POST请求。我使用JSON.stringify将我的数据转换为JSON。它产生如下结果:
[
{"name":"sEcho","value":1},
{"name":"iColumns","value":9},
{"name":"sColumns","value":""},
{"name":"iDisplayStart","value":0}
...]
虽然我希望它是这样的:
{"sEcho":1, "iColumns":9, "sColumns":"", "iDisplayStart":0} ...
我该怎么做?
答案 0 :(得分:6)
您可以在JSON.stringify
之前迭代您的数据并构建所需的结构:
var data = [{"name":"sEcho","value":1},{"name":"iColumns","value":9},{"name":"sColumns","value":""},{"name":"iDisplayStart","value":0}];
var options = {};
for (var i=0; i < data.length; i++){
var key = data[i].name;
var val = data[i].value;
options[key] = val;
}
var jsonString = JSON.stringify(options);
您还可以使用jQuery each
方法保存几行并使其看起来更好一些:
var options = {};
$.each(data, function(){
options[this.name] = this.value;
});
答案 1 :(得分:2)
如果您的目标浏览器支持ECMA-262第5版(JavaScript 1.8.5),就像大多数现代浏览器一样,您可以使用array "reduce" method:
var data = [{"name":"sEcho","value":1},{"name":"iColumns","value":9},{"name":"sColumns","value":""},{"name":"iDisplayStart","value":0}];
var obj = data.reduce(function(a,x){a[x.name]=x.value;return a;}, {});
JSON.stringify(obj); // '{"sEcho":1, "iColumns":9, ...}'