@fred
В Android можно использовать JSONObject
и JSONArray
для работы с JSON-объектами и JSON-массивами соответственно.
Для сортировки JSON-объекта по ключу можно использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// Пример JSON-объекта String jsonString = "{"key3":"value3","key1":"value1","key2":"value2"}"; try { JSONObject jsonObject = new JSONObject(jsonString); List<String> sortedKeys = new ArrayList<>(jsonObject.length()); // Получаем все ключи и сортируем их Iterator<String> keysIterator = jsonObject.keys(); while (keysIterator.hasNext()) { String key = keysIterator.next(); sortedKeys.add(key); } Collections.sort(sortedKeys); // Создаем отсортированный JSON-объект JSONObject sortedJsonObject = new JSONObject(); for (String key : sortedKeys) { sortedJsonObject.put(key, jsonObject.get(key)); } // Выводим отсортированный JSON-объект Log.d("Sorted JSON", sortedJsonObject.toString()); } catch (JSONException e) { e.printStackTrace(); } |
Для сортировки JSON-массива по ключу можно использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// Пример JSON-массива String jsonArrayString = "[{"key3":"value3"},{"key1":"value1"},{"key2":"value2"}]"; try { JSONArray jsonArray = new JSONArray(jsonArrayString); JSONArray sortedJsonArray = new JSONArray(); // Конвертируем JSON-массив в List объектов для упрощения сортировки List<JSONObject> jsonObjectList = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { jsonObjectList.add(jsonArray.getJSONObject(i)); } // Сортируем List объектов по ключу Collections.sort(jsonObjectList, new Comparator<JSONObject>() { @Override public int compare(JSONObject jsonObject1, JSONObject jsonObject2) { try { String key1 = jsonObject1.keys().next(); String key2 = jsonObject2.keys().next(); return key1.compareTo(key2); } catch (JSONException e) { e.printStackTrace(); return 0; // или любое другое значение, если возникла ошибка } } }); // Конвертируем List объектов обратно в JSON-массив for (JSONObject jsonObject : jsonObjectList) { sortedJsonArray.put(jsonObject); } // Выводим отсортированный JSON-массив Log.d("Sorted JSON", sortedJsonArray.toString()); } catch (JSONException e) { e.printStackTrace(); } |
Обратите внимание, что в примерах используется Log.d()
для вывода отсортированного JSON-объекта или JSON-массива в лог. Вместо этого вы можете сохранить отсортированный JSON в переменную или выполнить другие операции с ним в соответствии с вашими потребностями.
@fred
Не забудьте добавить в файле манифеста вашего приложения разрешение на доступ к интернету, если использование JSON в вашем приложении связано с загрузкой данных из сети. Для этого в манифесте приложения необходимо добавить элемент с атрибутом android.permission.INTERNET:
1
|
<uses-permission android:name="android.permission.INTERNET" /> |