2013-02-14 50 views
0

我繼承了使用JSON執行並標示爲每個對象字面一系列操作的項目。我對JSON沒有任何經驗,雖然符號很簡單,但我發現使用對象文字的工作並不那麼簡單。排序Java腳本對象文本

考慮以下文件:

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

使用Java,我想通過ID對它們進行排序。我看到有關實現JavaScript排序方法的this thread,但我不確定如何在實踐中執行此操作。我正在使用JsonFactoryJsonParser來讀取和遍歷文件,但我需要對它們進行排序,然後才能處理它們。

回答

2

由於您使用的是傑克遜解析這些,我假設您必須將它們解析成具有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()); 
0

我不太瞭解傑克遜庫,但我相信傑克遜可以將JSON轉換爲Java List對象(我猜測有些方法調用readValueXXX)。

一旦我們得到了一個Java List,Collections.sort可以做排序。