对Java脚本对象文本进行排序

对Java脚本对象文本进行排序,java,json,sorting,Java,Json,Sorting,我继承了一个项目,该项目使用JSON执行由每个对象文本表示的一系列操作。我对JSON没有任何经验,虽然符号是直截了当的,但我发现使用对象文本的情况不是这样 考虑以下文件: [{ "Name": "Hingle McCringleberry", "ID": "4" }, { "Name": "Scoish Velociraptor Maloish", "ID": "1" }, { "Name": "DGlester Hardunkichud", "I

我继承了一个项目,该项目使用JSON执行由每个对象文本表示的一系列操作。我对JSON没有任何经验,虽然符号是直截了当的,但我发现使用对象文本的情况不是这样

考虑以下文件:

[{
    "Name": "Hingle McCringleberry",
    "ID": "4"
},
{
    "Name": "Scoish Velociraptor Maloish",
    "ID": "1"
},
{
    "Name": "DGlester Hardunkichud",
    "ID": "3"
}]

使用Java,我想按ID对它们进行排序。我看到了关于实现JavaScript排序方法的讨论,但我不确定在实践中如何做到这一点。我使用and来读取和迭代文件,但我需要先对它们进行排序,然后才能处理它们。

由于您使用Jackson来解析这些,我假设您必须将它们解析为某种具有ID和名称的对象。如果是这样,只需编写一个标准即可。例如:

NamedObject.java:

public class NamedObject {
    // I'm using public fields instead of getters/setters for brevity,
    // since this is just sample code.

    @JsonProperty("ID")
    public int id;

    @JsonProperty("Name")
    public String name;
}
public class NamedObjectIdComparator implements Comparator<NamedObject> {
    public int compare(NamedObject object1, NamedObject object2) {
        return object1.id - object2.id;
    }
}
namedObjectedComparator.java:

public class NamedObject {
    // I'm using public fields instead of getters/setters for brevity,
    // since this is just sample code.

    @JsonProperty("ID")
    public int id;

    @JsonProperty("Name")
    public String name;
}
public class NamedObjectIdComparator implements Comparator<NamedObject> {
    public int compare(NamedObject object1, NamedObject object2) {
        return object1.id - object2.id;
    }
}
公共类namedObjectedComparator实现Comparator{
公共int比较(NamedObject对象1、NamedObject对象2){
返回object1.id-object2.id;
}
}
然后,要对对象列表进行排序:

List<NamedObject> objects = // parse using JsonParser
Collections.sort(objects, new NamedObjectIdComparator());
List objects=//使用JsonParser进行解析
排序(对象,新名称ObjectedComparator());

我对jackson库不太了解,但我确信jackson可以将JSON转换为Java
List
对象(我想有些方法调用
readValueXXX

一旦我们得到一个Java
列表
就可以进行排序了