0

我继承了一个项目,该项目使用 JSON 来执行由每个对象字面量表示的一系列操作。我对 JSON 的经验为零,虽然符号很简单,但我发现使用对象文字的情况不太好。

考虑以下文件:

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

使用 Java,我想按 ID 对它们进行排序。我看到这个线程谈论实现 JavaScript 排序方法,但我不确定如何在实践中执行此操作。我正在使用JsonFactoryJsonParser来读取和迭代文件,但我需要先对它们进行排序,然后才能处理它们。

4

2 回答 2

2

由于您使用杰克逊来解析这些,我假设您必须将它们解析为具有 ID 和名称的某种对象的列表。如果是这种情况,只需编写一个标准Comparator。例如:

命名对象.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;
}

NamedObjectIdComparator.java:

public class NamedObjectIdComparator implements Comparator<NamedObject> {
    public int compare(NamedObject object1, NamedObject object2) {
        return object1.id - object2.id;
    }
}

然后,对对象列表进行排序:

List<NamedObject> objects = // parse using JsonParser
Collections.sort(objects, new NamedObjectIdComparator());
于 2013-02-14T17:53:29.337 回答
0

我对杰克逊库了解不多,但我确信杰克逊可以将 JSON 转换为 Java对象(我猜List有些方法调用)。readValueXXX

一旦我们得到一个 Java ListCollections.sort就可以进行排序。

于 2013-02-14T17:54:03.953 回答