Привет я хочу создать массив 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.
Однако я получаю очень забавно выглядящий массив как
[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"]
Только с "LastOne" тем, чтобы быть отображенным, когда я получаю его использование jQuery
.
Массив Должен быть похожим
{["3": "SomeValue"], ["40": "AnotherValue"], ["23": "SomethingElse"], ["9": "AnotherOne"], ["1": "LastOne"]}
Числа не обнаруживаются вообще по некоторым причинам в массиве, который я получаю.
Для быстрого решения:
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"}
]
Обратитесь к комментарию Джима Блэклера о том, что вы делаете неправильно.
То, что вы процитировали для своего "Объект должен выглядеть как", является некорректным JSON. Это объект (разделенный {
и }
), но внутри него есть значения, у которых нет ключей. Смотрите json.org для синтаксиса JSON.
Если вам нужно это:
{"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 (это JSONArray из JSONObjects).
Подсказка находится в документации для JSONArray для метода put (int index, String value)
Если индекс больше, чем длины JSONArray, тогда будут добавлены нулевые элементы, чтобы заполнить его.