#android #java #json
И снова здравствуйте! Опять загадки преподносит Java по неопытности... Есть JSON: { "data": { "task_1": { "name": "task_1" }, "task_2": { "name": "task_2" }, "task_3": { "name": "task_3" }, "task_4": { "name": "task_4" } } } Есть код, который обрабатывает этот JSON выводит ключи объектов на экран: String jsonStr = "{\"data\":{\"task_1\":{\"name\":\"task_1\"},\"task_2\":{\"name\":\"task_2\"},\"task_3\":{\"name\": \"task_3\"},\"task_4\":{\"name\": \"task_4\"}}}"; try { JSONObject jsonObject = new JSONObject(jsonStr); JSONObject data = jsonObject.getJSONObject("data"); Iterator i = data.keys(); while (i.hasNext()){ String objName = i.next().toString(); Log.d(TAG + ":JSON_TEST:", objName); } } catch (JSONException e) { Log.d(TAG + ":JSON_TEST:", e.getMessage()); } Вопрос: почему при выводе ключи перемешались и вывелись не так, как они стоят в JSON? P.S.: к сожалению, код на ideone.com запустить не смог, там не поддерживается import org.json.JSONObject;
Ответы
Ответ 1
Потому что: A JSONObject is an unordered collection of name/value pairs Ищите ответы на подобные вопросы в документации. В частности для JSONObject.Ответ 2
Упорядоченными являются элементы массива. То есть у вас data является объектом, и task_X - его поля. Порядок полей не важен. А вот если бы они передавались, как массив... { "data": [ { "name": "task_1" }, { "name": "task_2" }, { "name": "task_3" }, { "name": "task_4" } ] } то оставались бы упорядоченными
Комментариев нет:
Отправить комментарий