对于想了解android–如何在java中对json对象的数组进行排序的读者,本文将提供新的信息,我们将详细介绍javajsonobject排序,并且为您提供关于Android如何对JSONObjec
对于想了解android – 如何在java中对json对象的数组进行排序的读者,本文将提供新的信息,我们将详细介绍java jsonobject排序,并且为您提供关于Android如何对JSONObjects的JSONArray进行排序、Java中对JSONArray中的对象的某个字段进行排序、在Android中,使用嵌套的json对象和带有多个json对象的嵌套json数组从json获取String、在Android中对字符串的数组列表进行排序的有价值信息。
本文目录一览:- android – 如何在java中对json对象的数组进行排序(java jsonobject排序)
- Android如何对JSONObjects的JSONArray进行排序
- Java中对JSONArray中的对象的某个字段进行排序
- 在Android中,使用嵌套的json对象和带有多个json对象的嵌套json数组从json获取String
- 在Android中对字符串的数组列表进行排序
android – 如何在java中对json对象的数组进行排序(java jsonobject排序)
我在jsonarray中有两个json对象
"errorCode": "1",
"data": [
{
"messageId": 590,
"message": "WvZiT3RPm7feC6Hxsa/Ing==",
"messageType": "CHAT",
"sentOn": "01:51 PM, Apr 06, 2013",
"mainParent": 589,
"officeId": "19",
"webParent": 590
},
{
"messageId": 589,
"message": "1A45rtoC3Cy88h73TEvDqQ==",
"messageType": "CHAT",
"sentOn": "01:50 PM, Apr 06, 2013",
"parent": 0,
"signImg": null,
"mainParent": 589,
"officeId": "19",
"webParent": 1
}
]
所以我想根据消息ID键按升序排序.我尝试使用比较器,对象类型为json对象,我在compareto方法中遇到错误.请建议我
解决方法:
我在这里发布答案,帮助那些面临这类问题的人.
public static JSONArray getSortedList(JSONArray array) throws JSONException {
List<JSONObject> list = new ArrayList<JSONObject>();
for (int i = 0; i < array.length(); i++) {
list.add(array.getJSONObject(i));
}
Collections.sort(list, new SortBasedOnMessageId());
JSONArray resultArray = new JSONArray(list);
return resultArray;
}
这部分代码将有助于对json数组进行排序
查看下面的SortBasedOnMessageId类.
public class SortBasedOnMessageId implements Comparator<JSONObject> {
/*
* (non-Javadoc)
*
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
* lhs- 1st message in the form of json object. rhs- 2nd message in the form
* of json object.
*/
@Override
public int compare(JSONObject lhs, JSONObject rhs) {
try {
return lhs.getInt("messageId") > rhs.getInt("messageId") ? 1 : (lhs
.getInt("messageId") < rhs.getInt("messageId") ? -1 : 0);
} catch (JSONException e) {
e.printstacktrace();
}
return 0;
}
}
Android如何对JSONObjects的JSONArray进行排序
我做了一个jsonobjects的jsonarray。现在,我需要根据jsonobjects中的值对JSONArray进行排序。以前,我对自定义对象的ArrayList进行如下排序:
比较器:
public class KreeftenComparatorLA implements Comparator<Kreeft> { public int compare(Kreeft left, Kreeft right) { return left.latijnseNaam.compareTo(right.latijnseNaam); }}public class KreeftenComparatorNL implements Comparator<Kreeft> { public int compare(Kreeft left, Kreeft right) { return left.naam.compareTo(right.naam); }}
然后对arraylist进行排序:
Collections.sort(db.lijst, new KreeftenComparatorLA());
要么:
Collections.sort(db.lijst, new KreeftenComparatorNL());
但是当我使用JSONArray尝试同样的事情时(JA =我的jsonarray)
Collections.sort(JA, new KreeftenComparatorNL());
Collections.sort给出一个错误:
类型Collections中的方法sort(List,Comparator)不适用于参数(JSONArray,ThisActicity.KreeftenComparatorNL)
有人知道如何对JSONArray进行排序吗?
答案1
小编典典问题是JSONArray或多或少持有最终是字符串的JSONObjects(和其他JSONArrays)。将字符串完全反序列化为POJO,将其排序,然后再返回JSON,这相当繁重。
第二个问题是JSONArray可以包含:Boolean,JSONArray,JSONObject,Number,String或JSONObject.NULL对象;即它是混合类型,很难将元素转储到某种类型的List中并对其进行排序,然后通过列表将已排序的项目转回JSON数组。从JSONArray获取每个元素的通用类型的唯一确定方法是使用Object
get()方法。.当然,您所拥有的只是Object对象,并且在不重新访问Object的情况下将无法对其进行任何有意义的排序序列化问题。
假设您的JSONArray包含同构结构的值,则可以遍历JSONArray,在每个方法上调用一个类型化的get()方法,将它们转储为List类型,然后对其进行排序。如果您的JSONArray仅包含字符串或数字之类的“简单”类型,则这相对容易。这不是确切的代码,但类似:
List<String> jsonValues = new ArrayList<String>();for (int i = 0; i < myJsonArray.length(); i++) jsonValues.add(myJsonArray.getString(i));Collections.sort(jsonValues);JSONArray sortedJsonArray = new JSONArray(jsonValues);
当然,如果您有嵌套的对象,则可能会有些棘手。如果您要在顶层进行排序的值可能还不错…
List<JSONObject> jsonValues = new ArrayList<JSONObject>();for (int i = 0; i < myJsonArray.length(); i++) jsonValues.add(myJsonArray.getJSONObject(i));
然后使用类似的比较器进行排序:
class JSONComparator implements Comparator<JSONObject>{ public int compare(JSONObject a, JSONObject b) { //valA and valB could be any simple type, such as number, string, whatever String valA = a.get("keyOfValueToSortBy"); String valB = b.get("keyOfValueToSortBy"); return valA.compareTo(valB); //if your value is numeric: //if(valA > valB) // return 1; //if(valA < valB) // return -1; //return 0; }}
同样,这对JSONArray中数据的同质性做出了一些假设。如果可能,请根据情况进行调整。另外,您将需要添加异常处理等。祝您编程愉快!
*根据评论 *修改 固定
Java中对JSONArray中的对象的某个字段进行排序
需求:
今天调用一个第三方接口,然后返回的是一个josn数组,需要根据里面的“报告日期”报告日期进行由大到小排序,最新的排在前面。
这种别人接口已经开发完成,不能改,所以只有我们自己来排序。
思路一():将josn数组转为list集合,然后获取到里面的每个对象,再获取“报告日期”,然后排序,然后对对应的对象排序。
思路二:
实现java的Collections.sort方法,自定义Comparator方法,然后排序。
这样效率比较高。
下面是测试和实现代码。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.deserializer.ParseProcess;
/**
* Java中对JSONArray中的对象的某个字段进行排序
*
* @author lijianbo
* @version 1.0
*
*/
public class Test1 implements ParseProcess {
public static void main(String[] args) {
String jsonArrStr = "[ { \"ID\": \"2016-05-25\", \"Name\": \"Fargo Chan\" },{ \"ID\": \"2016-05-23\", \"Name\": \"Aaron Luke\" },{ \"ID\": \"2016-05-26\", \"Name\": \"Dilip Singh\" }]";
System.out.println("排序前:"+jsonArrStr);
String jsonArraySort = jsonArraySort(jsonArrStr);
System.out.println("排序后:"+jsonArraySort);
}
/**
* 按照JSONArray中的对象的某个字段进行排序(采用fastJson)
*
* @param jsonArrStr
* json数组字符串
*
*/
public static String jsonArraySort(String jsonArrStr) {
JSONArray jsonArr = JSON.parseArray(jsonArrStr);
JSONArray sortedJsonArray = new JSONArray();
List<JSONObject> jsonValues = new ArrayList<JSONObject>();
for (int i = 0; i < jsonArr.size(); i++) {
jsonValues.add(jsonArr.getJSONObject(i));
}
Collections.sort(jsonValues, new Comparator<JSONObject>() {
// You can change "Name" with "ID" if you want to sort by ID
private static final String KEY_NAME = "ID";
@Override
public int compare(JSONObject a, JSONObject b) {
String valA = new String();
String valB = new String();
try {
// 这里是a、b需要处理的业务,需要根据你的规则进行修改。
String aStr = a.getString(KEY_NAME);
valA = aStr.replaceAll("-", "");
String bStr = b.getString(KEY_NAME);
valB = bStr.replaceAll("-", "");
} catch (JSONException e) {
// do something
}
return -valA.compareTo(valB);
// if you want to change the sort order, simply use the following:
// return -valA.compareTo(valB);
}
});
for (int i = 0; i < jsonArr.size(); i++) {
sortedJsonArray.add(jsonValues.get(i));
}
return sortedJsonArray.toString();
}
}
结果为:
排序前:[ { "ID": "2016-05-25", "Name": "Fargo Chan" },{ "ID": "2016-05-23", "Name": "Aaron Luke" },{ "ID": "2016-05-26", "Name": "Dilip Singh" }]
排序后:[{"Name":"Dilip Singh","ID":"2016-05-26"},{"Name":"Fargo Chan","ID":"2016-05-25"},{"Name":"Aaron Luke","ID":"2016-05-23"}]
转载:http://blog.51cto.com/jianboli/1983017
在Android中,使用嵌套的json对象和带有多个json对象的嵌套json数组从json获取String
例如String people = …;
String idPeople = …;等等
我试图使用JSONTokeners,因为我试图搜索类似的问题,而对于简单的json,我没有问题,但我不知道如何从这里正确获取参数:
{"id":1,"error":null,"result": {"nPeople":2,"people":[ {"namePeople":"Inca","power":"1235","location":"asdfghjja","idPeople":189,"mainItems":"brownGem","verified":false,"description":"Lorem impsum bla bla","linkAvatar":"avatar_12.jpg","longitude":16.2434263,"latitude":89.355118},{"namePeople":"Maya","location":"hcjkjhljhl","idPeople":119,"mainItems":"greenstone","linkAvatar":"avatar_6.jpg","latitude":89.3551185}] } }
NB数组中对象的数量并不总是2 …并且可能包含4个或更多人对象
解决方法
但我想它可能会奏效.
JSONObject obj = new JSONObject(jsonString); String id = obj.getString("id"); String error = obj.getString("error"); JSONObject result = obj.getJSONObject("result"); int nPeople = result.getInt("nPeople"); JSONArray people = result.getJSONArray("people"); for(int i = 0 ; i < people.length() ; i++){ JSONObject p = (JSONObject)people.get(i); String namePeople = p.getString("namePeople"); ... }
在Android中对字符串的数组列表进行排序
我有一个字符串arraylist’names’。其中包含人员名称。我想按字母顺序对arraylist进行排序。请帮助我
答案1
小编典典这将解决您的问题…
ArrayList arrayList = new ArrayList();//Add elements to ArraylistarrayList.add("1");arrayList.add("3");arrayList.add("5");arrayList.add("2");arrayList.add("4");Collections.sort(arrayList);//display elements of ArrayListSystem.out.println("ArrayList elements after sorting in ascending order : ");for(int i=0; i<arrayList.size(); i++) System.out.println(arrayList.get(i));
要对ArrayList对象进行排序,请使用Collection.sort
方法。这是一种静态方法。它将ArrayList对象的元素按升序排序。
万一下面的代码在注释中不起作用,请尝试以下代码。
创建一个自定义比较器类:
import java.util.Comparator;class IgnoreCaseComparator implements Comparator<String> { public int compare(String strA, String strB) { return strA.compareToIgnoreCase(strB); }}
然后按您的排序:
IgnoreCaseComparator icc = new IgnoreCaseComparator();java.util.Collections.sort(arrayList,icc);
我们今天的关于android – 如何在java中对json对象的数组进行排序和java jsonobject排序的分享就到这里,谢谢您的阅读,如果想了解更多关于Android如何对JSONObjects的JSONArray进行排序、Java中对JSONArray中的对象的某个字段进行排序、在Android中,使用嵌套的json对象和带有多个json对象的嵌套json数组从json获取String、在Android中对字符串的数组列表进行排序的相关信息,可以在本站进行搜索。
本文标签: