我有一个像这样的JSONArray:
[{
"Periode":203,
"Annulé":0,
"En_commande":0,
"En_attente":100,
"En_cours":0,
"Perdu":0,
"Terminé":0
},
{
"Periode":204,
"Annulé":0,
"En_commande":0,
"En_attente":500,
"En_cours":0,
"Perdu":500,
"Terminé":0
},
{
"Periode":205,
"Annulé":0,
"En_commande":1000,
"En_attente":0,
"En_cours":0,
"Perdu":0,
"Terminé":0
},
{
"Periode":208,
"Annulé":1000,
"En_commande":0,
"En_attente":0,
"En_cours":0,
"Perdu":0,
"Terminé":0
},
{
"En_attente":600,
"En_commande":1000,
"Perdu":2000,
"Terminé":500,
"En_cours":2000,
"Annulé":1000
}]
此数组中的最后一个对象与其他对象的总数相对应(“Periode”字段除外)。 所以我想按照它们的值对最后一个对象进行排序,然后按照与它相同的顺序对所有其他JSONObject进行排序。
我不知道如何做到这一点,解决方案将是完美的,但我采取任何研究轨道或算法
我的例子需要结果:
[{
"Periode":203,
"Perdu":0,
"En_cours":0,
"En_commande":0,
"Annulé":0,
"En_attente":100,
"Terminé":0
},
{
"Periode":204,
"Perdu":500,
"En_cours":0,
"En_commande":0,
"Annulé":0,
"En_attente":500,
"Terminé":0
},
{
"Periode":205,
"Perdu":0,
"En_cours":0,
"En_commande":1000,
"Annulé":0,
"En_attente":0,
"Terminé":0
},
{
"Periode":208,
"Perdu":0,
"En_cours":0,
"En_commande":0,
"Annulé":1000,
"En_attente":0,
"Terminé":0
},
{
"Perdu":2000,
"En_cours":2000,
"En_commande":1000,
"Annulé":1000,
"En_attente":600,
"Terminé":500
}]
答案 0 :(得分:0)
导入gson: https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.0
将您的json转换为类:(在此示例中为数据) http://www.jsonschema2pojo.org/
将字符串json转换为数组,对其进行排序,然后将其转换回来:
Data[] data = new Gson().fromJson(json, Data[].class);
List<Data> datas = Arrays.asList(data);
Collections.sort(datas, new Comparator<Data>() {
@Override
public int compare(Data o1, Data o2) {
if(o1.getPeriode() != null && o2.getPeriode() != null)
return Integer.compare(o1.getPeriode(), o2.getPeriode());
return Integer.compare(o1.getPerdu(), o2.getPerdu());
}
});
data = datas.toArray(new Data[0]);
String s = new Gson().toJson(data);
System.out.println(s);