您好我想创建一个JSON数组。
我尝试过使用:
JSONArray jArray = new JSONArray();
while(itr.hasNext()){
int objId = itr.next();
jArray.put(objId, odao.getObjectName(objId));
}
results = jArray.toString();
注意:odao.getObjectName(objId)
根据“对象ID”检索名称,该对象称为objId。
然而,我得到一个非常有趣的数组,如
[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“]}
由于某些原因,我得到的数字根本没有出现。
答案 0 :(得分:12)
快速解决方案:
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();
基于T. J. Crowder's response,我的解决方案是这样做的:
[{"3":"SomeValue"},
{"40":"AnotherValue"},
{"23":"SomethingElse"},
{"9":"AnotherOne"},
{"1":"LastOne"}
]
请参阅Jim Blackler关于你做错的评论。
答案 1 :(得分:8)
线索在JSONArray的文档中,用于方法put(int index,String value)
如果索引大于JSONArray的长度,则null元素将是 根据需要添加,以填补它。
答案 2 :(得分:2)
你引用的“对象看起来像”是无效的JSON。它是一个对象(由{
和}
分隔)但是它内部的值没有任何键。有关JSON的语法,请参阅json.org。
如果你想要这个:
{"3":"SomeValue",
"40":"AnotherValue",
"23":"SomethingElse",
"9":"AnotherOne",
"1":"LastOne"
}
...改为使用JSONObject,并在输入条目时将objId
转换为密钥,例如:
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"}
]
...请参阅The Elite Gentleman's answer(这是JSONObjects的JSONArray)。