Jquery 如何创建JSON数组?

Jquery 如何创建JSON数组?,jquery,json,arrays,Jquery,Json,Arrays,嗨,我想创建一个JSON数组 我试过使用: JSONArray jArray = new JSONArray(); while(itr.hasNext()){ int objId = itr.next(); jArray.put(objId, odao.getObjectName(objId)); } results = jArray.toString(); 注意:odao.getObjectName(objId)根据名为objId的“对象Id”检索名称 但是我得到了一个非常有

嗨,我想创建一个JSON数组

我试过使用:

JSONArray jArray = new JSONArray();
  while(itr.hasNext()){
    int objId = itr.next();
jArray.put(objId, odao.getObjectName(objId));
  }
results = jArray.toString();
注意:
odao.getObjectName(objId)
根据名为objId的“对象Id”检索名称

但是我得到了一个非常有趣的数组

[null,null,null,"SomeValue",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"AnotherValue",null,null,null,null,null,null,null,null,null,null,"SomethingElse","AnotherOne","LastOne"]
使用
jQuery
检索时只显示“LastOne”

数组应该如下所示

{[“3”:“SomeValue”],[“40”:“AnotherValue”],[“23”:“SomethingElse”],[“9”:“AnotherOne”],[“1”:“LastOne”]}


由于某种原因,我得到的数组中根本没有显示数字。

线索在JSONArray for method put(int index,String value)的文档中

如果索引大于JSONArray的长度,则将使用null元素 根据需要添加以填充它


对于您的快速解决方案:

JSONArray jArray = new JSONArray();
while (itr.hasNext()) {
   JSONObject json = new JSONObject();
   int objId = itr.next();
   json.put(Integer.toString(objId), odao.getObjectName(objId));
   jArray.put(json);
}

results = jArray.toString();
基于,我的解决方案实现了以下功能:

[{"3":"SomeValue"},
 {"40":"AnotherValue"},
 {"23":"SomethingElse"},
 {"9":"AnotherOne"},
 {"1":"LastOne"}
]

请参阅Jim Blackler关于您做错了什么的评论。

您为“对象应该是什么样子”引用的内容是无效的JSON。它是一个对象(由
{
}
分隔),但其中的值没有任何键。有关JSON的语法,请参阅

如果你想要这个:

{"3":"SomeValue",
 "40":"AnotherValue",
 "23":"SomethingElse",
 "9":"AnotherOne",
 "1":"LastOne"
}
[{"3":"SomeValue"},
 {"40":"AnotherValue"},
 {"23":"SomethingElse"},
 {"9":"AnotherOne"},
 {"1":"LastOne"}
]
…改为使用,并在输入条目时将您的
objId
s转换为键,例如:

JSONObject obj = new JSONObject();
while(itr.hasNext()){
    int objId = itr.next();
    obj.put(String.valueOf(objId), odao.getObjectName(objId));
}
results = obj.toString();
如果你想要这个:

{"3":"SomeValue",
 "40":"AnotherValue",
 "23":"SomethingElse",
 "9":"AnotherOne",
 "1":"LastOne"
}
[{"3":"SomeValue"},
 {"40":"AnotherValue"},
 {"23":"SomethingElse"},
 {"9":"AnotherOne"},
 {"1":"LastOne"}
]

…请看(这是一个JSONObject的JSONArray)。

我看,索引实际上是数组的索引,而不是我可以指定的值。@Ankur:是的,它是数字索引数组意义上的数组,不是映射(又称字典又称关联数组)。您可以使用JSONObject()作为映射;JSON对象中的键总是字符串,因此您需要用
对象
生成一个字符串,但这很简单。您有一个JSON数组的JSON对象?无论您得到什么,它都不应该是这样。数组是[foo,bar,baz],而对象是{“foo”:“value”,“bar”:“value”,“baz”:“value”}。你似乎把你的{}和[]弄糊涂了。谢谢大家,我从每个答案中都得到了一些东西。最后,我意识到我的问题并没有被准确地表达出来,但你的回答解决了我的问题。在我们知道他/她真正想要什么之前,这里的每个答案都是正确的。