@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" /> |