Как мне создать массив JSON? - PullRequest
5 голосов
/ 30 марта 2010

Привет! Я хочу создать массив 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"]

Когда при извлечении с помощью jQuery.

отображается только «LastOne».

Массив должен выглядеть как

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

По какой-то причине в массиве, который я получаю, цифры вообще не отображаются.

Ответы [ 3 ]

12 голосов
/ 30 марта 2010

Для вашего быстрого решения:

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. Ответ Дж. Краудера , мое решение делает это:

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

См. Комментарий Джима Блэклера о том, что вы делаете неправильно.

8 голосов
/ 30 марта 2010

Подсказка в документации для JSONArray для метода put (int index, String value)

Если индекс больше длины JSONArray, то нулевые элементы будут добавляется по мере необходимости, чтобы дополнить его.

2 голосов
/ 30 марта 2010

То, что вы процитировали для своего «объекта должны выглядеть», является недопустимым 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"}
]

... см. Ответ элитного джентльмена (это JSONArray of JSONObjects).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...