考虑以下是我的数组
[
{"id":10,"name":"name10","valid":true},
{"id":12,"name":"name12","valid":false},
{"id":11,"name":"name11","valid":false},
{"id":9,"name":"name9","valid":true}
]
从中创建了一个 JsonArray
,就像下面的代码一样:
//Create a JSON Parser using GSON library
objJsonParser = new JsonParser();
String strArrayText = [{"id":9,"name":"name9","valid":true}, ...]
JsonArray jsonArrayOfJsonObjects = objJsonParser.parse(strArrayText).getAsJsonArray();
现在,我正在尝试根据 name
字段对 jsonArrayOfJsonObjects
进行排序。
期望的输出:
[
{"id":9,"name":"name9","valid":true},
{"id":10,"name":"name10","valid":false},
{"id":11,"name":"name11","valid":false},
{"id":12,"name":"name12","valid":true}
]
谁能帮助用关于 Java 和 Gson 的最佳方法解决这个问题?
非常感谢您的意见。
最佳答案
首先,解析JSON的正确方法是创建一个类来封装你的数据,例如:
public class MyClass {
private Integer id;
private String name;
private Boolean valid;
//getters & setters
}
然后:
Type listType = new TypeToken<List<MyClass>>() {}.getType();
List<MyClass> myList = new Gson().fromJson(strArrayText, listType);
现在你有一个 List
并且你想按属性 id
的值对它进行排序,所以你可以使用 Collections
解释here :
public class MyComparator implements Comparator<MyClass> {
@Override
public int compare(MyClass o1, MyClass o2) {
return o1.getId().compareTo(o2.getId());
}
}
最后:
Collections.sort(myList, new MyComparator());
关于java - 如何根据键对 GSON 数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18575757/