当前位置: 首页 > 面试题库 >

如何根据密钥对GSON数组进行排序?

苏野
2023-03-14
问题内容

考虑以下是我的数组

[
  {"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();

现在,我正在尝试jsonArrayOfJsonObjects根据name字段进行排序。

所需输出:

[
  {"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按照此处的说明使用:

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());


 类似资料:
  • 问题内容: 我在表中列出了用户列表。 活动用户应在非活动用户上方排序。 我正在尝试使用lodash 函数进行此操作,但未成功。 这里是如何的外观: 这是带有用户数组和sortBy loadsh函数代码的代码笔:https ://codepen.io/nikolatrajkovicq/pen/pGXdpM?editors = 1112 任何地方都欢迎。 问题答案: 您可以这样使用: 您可以只减去中的

  • 我正在尝试使用Java对由整数对字符串组成的数组进行排序 输入为: 所需的输出是:

  • 问题内容: 是否可以对看起来像这样的数组进行排序和重新排列: 匹配此数组的安排: 不幸的是,我没有任何要跟踪的ID。我将需要优先处理items-array,以使其尽可能接近sortingArr。 更新: 这是我正在寻找的输出: 任何想法如何做到这一点? 问题答案: 就像是: 这是一个较短的代码,但是会破坏数组:

  • 我有一个这样的数组- {1, 2, 3, 4, 5, 6} 我想按3的倍数和余数0、1和2的顺序排序。(第一组是3的倍数,第二组是3的倍数和余数1,最后一组是3的倍数和余数2),我想保留元素在数组中出现的顺序。结果应该是{3,6,1,4,2,5} 我有这个密码- 但这段代码并没有保留元素在数组中出现的顺序。我得到的结果是- {3, 6, 1, 4, 5, 2} 但是我希望结果是像{3, 6, 1,

  • 问题内容: 我有多个数组,我想根据其中一个的排序顺序对所有数组进行排序,如下所示: 我希望函数执行后,数组将如下所示: 问题答案: 您可以执行以下操作:首先根据键控数组的索引的索引对它们进行索引的值对它们进行排序,然后使用: 如果要在任何类型的集合上使它通用(但仍以与std lib集合算法相同的样式返回数组): 以及带有自定义比较器的版本:

  • 我有多个数组,我想根据其中一个数组的排序顺序对所有数组进行排序,如下所示: 我预计函数执行后的数组将如下所示: