【发布时间】:2011-07-11 16:26:18
【问题描述】:
我正在尝试向我的网络应用程序提交一些 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 对象?
EDIT#1:'listArray' 是一个简单的 Javascript 数组,其定义如下:
var listArray = new Array();
listArray.push({ "thing1" : "something" });
listArray.push({ "thing2" : "something" });
EDIT#2:通过以下调用将“表单”发送到服务器:
$.ajax({
type: 'POST',
url: '/url',
dataType: "json",
data: form,
success: function(data) {
/* success code here */
}
});
【问题讨论】:
-
请告诉我们
listArray是什么,它是如何定义的? -
( 强制性 SO 巨魔响应 ) 没有 JSON 对象之类的东西,JSON 是符号规范。您正在创建 javascript 对象文字。
-
@jondavidjohn:实际上在这种情况下,术语是正确的。当然,在 JSON 中有可以称为 JSON 对象的对象。将 JS 对象称为 JSON 对象是错误的,但是如果您仔细阅读,OP 并没有这样做(尽管可以以更清晰的方式编写)。
-
@jondavidjohn - 不,我认为这里的 OP 实际上是在谈论 JSON - 问题在于 在 JSON 中创建的是对象表示,而不是数组。
-
@Felix Kling - 没有真正理解您的意思,JSON 是从 javascript 定义对象文字的方式派生的表示法标准,但在这种情况下
form是一个对象文字,而不是一个“JSON对象”......也许我错过了一些东西。
标签: javascript jquery ruby-on-rails json