排序Javascript对象文字

时间:2013-02-14 17:40:51

标签: java json sorting

我继承了一个使用JSON来执行一系列操作的项目,如每个对象文字所表示的那样。我没有使用JSON的经验,虽然符号是直截了当的,但我发现使用对象文字的情况不那么严重。

考虑以下文件:

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

使用Java,我想按ID对它们进行排序。我看到this thread谈到实现JavaScript排序方法,但我不确定如何在实践中这样做。我正在使用JsonFactoryJsonParser来读取和迭代文件,但我需要对它们进行排序才能处理它们。

2 个答案:

答案 0 :(得分:2)

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

<强> 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;
}

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

答案 1 :(得分:0)

我对jackson库知之甚少,但我确信jackson可以将JSON转换为Java List对象(我想有些方法调用readValueXXX。)

获得Java List后, Collections.sort 可以进行排序。