Javascript数组转换为JSON对象而不是数组

时间:2011-07-11 16:26:18

标签: javascript jquery ruby-on-rails json

我正在尝试向我的网络应用提交一些JSON,我希望JSON像这样:

{ 
  "thing1" : 
  {
    "something" : "hello"
  },

  "list_of_things" :
  [
   {
     "item1" : "hello"
   },
   {
     "item2" : "hello"
   }
  ]
}

这里我有一个JSON对象和一个包含JSON对象的JSON数组。当我创建要在Javascript中提交的数据时,我会这样做:

form = {
  "thing1" : {
    "something" : somethingVariable
  },
  "list_of_things" : listArray
}

这里'listArray'是Javascript哈希对象的Javascript Array对象。我使用jQuery的ajax方法提交它,但不是javascript数组显示为所需的JSON数组,而是将它转换为一系列JSON对象,如下所示:

{ "1" : { "thing1" : "something" }, "2" : { "thing2" : "something" }...

如何将数组作为数组提交,而不是将数组索引转换为一系列JSON对象?

编辑#1:'listArray'是一个简单的Javascript数组,其定义如下:

var listArray = new Array();
listArray.push({ "thing1" : "something" });
listArray.push({ "thing2" : "something" });

编辑#2:'form'通过以下调用发送到服务器:

$.ajax({
  type: 'POST',
  url: '/url',
  dataType: "json",
  data: form,
  success: function(data) {
    /* success code here */
  }
});

1 个答案:

答案 0 :(得分:3)

看看here。如果您真的想要发布JSON,则需要发送字符串,而不是对象字面值。您可以在JSON.stringify上使用formor a more supported JSON solution)。

$.ajax({
    url: "/url",,
    dataType: "json",
    type: "POST",
    processData: false,
    contentType: "application/json",
    data: JSON.stringify(form)
});