Java中對jsonArray的排序,使用的是Gson

使用Gson對json解析字符串,轉化爲json對象.java

先上代碼: 下面是main方法裏面的代碼json

package testJava; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.google.gson.JsonParser; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class TestJava { public static void main(String[] args) { // TODO Auto-generated method stub
 jsoaArraySort(); } public static void jsoaArraySort() { String arrayData = "["
                + "{\"Name\":\"TVS\",\"No\":" + 202 + ",\"Length\":" + 23 + "},"
                + "{\"Name\":\"TVC\",\"No\":" + 203 + ",\"Length\":" + 14 + "},"
                + "{\"Name\":\"Wel\",\"No\":" + 345 + ",\"Length\":" + 35 + "},"
                + "{\"Name\":\"Sma\",\"No\":" + 678 + ",\"Length\":" + 45 + "},"
                + "{\"Name\":\"Sma\",\"No\":" + 136 + ",\"Length\":" + 15 + "},"
                + "{\"Name\":\"Cus\",\"No\":" + 257 + ",\"Length\":" + 17 + "},"
                + "{\"Name\":\"And\",\"No\":" + 678 + ",\"Length\":" + 16 + "},"
                + "{\"Name\":\"Roo\",\"No\":" + 136 + ",\"Length\":" + 56 + "}"
                +"]"; JsonParser parser = new JsonParser(); JsonArray jsonArray = parser.parse(arrayData).getAsJsonArray(); System.out.println("init jsonArray=" + jsonArray.toString()); JsonArray sort_JsonArray = new JsonArray(); List<JsonObject> list = new ArrayList<JsonObject>(); JsonObject jsonObj = null; for (int i = 0; i < jsonArray.size(); i++) { jsonObj = (JsonObject) jsonArray.get(i); list.add(jsonObj); } //這裏最核心的地方就是SortComparator這個類 //其中構造方法的參數: //sortItem是要排序的jsonArray中一個元素, 這裏我選擇是Name, 也能夠選擇No或者是Length //sortType是排序的類型, 有三種狀況 // 1. 排序的元素對應的值是int, 那麼sortType = "int"; // 2. 排序的元素對應的值是string, 那麼sortType = "string"; // 3. 排序的元素對應的是是其餘類型, 默認是不排序, (後面能夠擴展) //sortDire是排序的方向, 能夠是asc或者desc, 默認是數據的原始方向(就是沒有排序方向)
        String sortItem = "Length"; String sortType = "int"; String sortDire = "desc"; Collections.sort(list, new SortComparator(sortItem, sortType, sortDire)); for (int i = 0; i < list.size(); i++) { jsonObj = list.get(i); sort_JsonArray.add(jsonObj); } System.out.println("after sort_JsonArray=" + sort_JsonArray.toString()); } }

下面給出SortComparator.javaide

package testJava; import java.util.Comparator; import com.google.gson.JsonObject; public class SortComparator implements Comparator<JsonObject> { private String sortItem; private String sortType; private String sortDire; public SortComparator(String sortItem, String sortType, String sortDire) { this.sortItem = sortItem; this.sortType = sortType; this.sortDire = sortDire; } @Override public int compare(JsonObject o1, JsonObject o2) { String value1 = o1.getAsJsonObject().get(sortItem).getAsString(); String value2 = o2.getAsJsonObject().get(sortItem).getAsString(); if ("int".equalsIgnoreCase(this.sortType)) { // int sort
            int int1 = Integer.parseInt(value1); int int2 = Integer.parseInt(value2); if ("asc".equalsIgnoreCase(this.sortDire)) { return int1 - int2; } else if ("desc".equalsIgnoreCase(this.sortDire)) { return int2 - int1; } else { return 0; } } else if ("string".equalsIgnoreCase(this.sortType)) { // string sort
            if ("asc".equalsIgnoreCase(this.sortDire)) { return value1.compareTo(value2); } else if ("desc".equalsIgnoreCase(this.sortDire)) { return value2.compareTo(value1); } else { return 0; } } else { // nothing sort
            return 0; } } }

測試的結果:測試

jsonArray的初始值以下: jsonArray = [   {"Name":"TVS","No":202,"Length":23},   {"Name":"TVC","No":203,"Length":14},   {"Name":"Wel","No":345,"Length":35},   {"Name":"Sma","No":678,"Length":45},   {"Name":"Sma","No":136,"Length":15},   {"Name":"Cus","No":257,"Length":17},   {"Name":"And","No":678,"Length":16},   {"Name":"Roo","No":136,"Length":56} ];
下面是按照Name元素從小到達排序: SortComparator("Name", "string", "asc") after sort_JsonArray=[    {"Name":"And","No":678,"Length":16},    {"Name":"Cus","No":257,"Length":17},    {"Name":"Roo","No":136,"Length":56},    {"Name":"Sma","No":678,"Length":45},    {"Name":"Sma","No":136,"Length":15},    {"Name":"TVC","No":203,"Length":14},    {"Name":"TVS","No":202,"Length":23},    {"Name":"Wel","No":345,"Length":35}  ]
下面是按照Name元素從大到小排序: SortComparator("Name", "string", "desc") after sort_JsonArray=[ {"Name":"Wel","No":345,"Length":35}, {"Name":"TVS","No":202,"Length":23}, {"Name":"TVC","No":203,"Length":14}, {"Name":"Sma","No":678,"Length":45}, {"Name":"Sma","No":136,"Length":15}, {"Name":"Roo","No":136,"Length":56}, {"Name":"Cus","No":257,"Length":17}, {"Name":"And","No":678,"Length":16} ]
下面是按照Length元素從小到大排序: SortComparator("Length", "int", "asc") after sort_JsonArray=[ {"Name":"TVC","No":203,"Length":14}, {"Name":"Sma","No":136,"Length":15}, {"Name":"And","No":678,"Length":16}, {"Name":"Cus","No":257,"Length":17}, {"Name":"TVS","No":202,"Length":23}, {"Name":"Wel","No":345,"Length":35}, {"Name":"Sma","No":678,"Length":45}, {"Name":"Roo","No":136,"Length":56} ]
下面是按照Length元素從大到小排序: SortComparator("Length", "int", "desc") after sort_JsonArray=[ {"Name":"Roo","No":136,"Length":56}, {"Name":"Sma","No":678,"Length":45}, {"Name":"Wel","No":345,"Length":35}, {"Name":"TVS","No":202,"Length":23}, {"Name":"Cus","No":257,"Length":17}, {"Name":"And","No":678,"Length":16}, {"Name":"Sma","No":136,"Length":15}, {"Name":"TVC","No":203,"Length":14} ]
相關文章
相關標籤/搜索