Получаю такого вида JSONArray:
[
{
"id": 1,
"name": "Иван",
"image": "/images/category/",
"status": 1,
"totalMessages": 5
},
{
"id": 2,
"name": "Сергей",
"image": "/images/category/",
"status": 1,
"totalMessages": 120
},
{
"id": 3,
"name": "Вася",
"image": "/images/category/",
"status": 1,
"totalMessages": 40
}
]
Как получаю?
String json = JsonUtils.getJSONString("http://mysite.com/simple?data");
JSONArray data = new JSONArray(json);
JSONObject objJson = null;
// Попытался здесь сортировать.. но сортирует неверно.
data = JsonUtils.sort(data, new Comparator() {
public int compare(Object a, Object b) {
JSONObject ja = (JSONObject) a;
JSONObject jb = (JSONObject) b;
return ja.optString("totalMessages", "").toUpperCase().compareTo(jb.optString("totalMessages", "").toLowerCase());
}
});
// Здесь уже всё прогоняю и заполняю ArrayList данными...
for (int i = 0; i < data.length(); i++) {
objJson = data.getJSONObject(i);
String id = objJson.getString("id");
String name = objJson.getString("name");
String image = objJson.getString("image");
String status = objJson.getString("status");
String totalMessages = objJson.getString("totalMessages");
myArrayList.add(new Item(id, name, image, status, totalMessages));
}
Как сделать такой результат на выходе? Чтобы сортировал по ключу totalMessages
, не смотря на id
, name
, image
и status
ключи? :
[
{
"id": 1,
"name": "Иван",
"image": "/images/category/",
"status": 1,
"totalMessages": 5
},
{
"id": 3,
"name": "Вася",
"image": "/images/category/",
"status": 1,
"totalMessages": 40
},
{
"id": 2,
"name": "Сергей",
"image": "/images/category/",
"status": 1,
"totalMessages": 120
}
]
Заранее благодарен, кто поможет разобраться, что я не так делаю :)
P.S: вот содержимое JSONArray sort ()
public static JSONArray sort(JSONArray array, Comparator c){
List asList = new ArrayList(array.length());
for (int i=0; i<array.length(); i++){
asList.add(array.opt(i));
}
Collections.sort(asList, c);
JSONArray res = new JSONArray();
for (Object o : asList){
res.put(o);
}
return res;
}
Результат странный потому что Вы сортируете значения в строковом представлении. Чтобы сделать правильный порядок нужно сортировать в числовом:
data = JsonUtils.sort(data, new Comparator() {
public int compare(Object a, Object b) {
JSONObject ja = (JSONObject) a;
JSONObject jb = (JSONObject) b;
return Integer.compare(ja.optInt("totalMessages"), jb.optInt("totalMessages")));
Только у Вас сейчас почему-то обратный порядок - если что поменяйте местами параметры в Integer.compare(a <=> b)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хотелось бы узнать, какие есть практики использование программы vompal wabbit (можно и похожие, здесь это не важно)
Можно ли изменить внешний вид фрагмента (установить другой View) во время его работы или это возможно только в методе onCreateView()?