根据json中对象的一个属性值进行排序

1.原有的json数据

 final JsonReader reader = new JsonReader(new StringReader(videoIntro.getIntroduction()));
                
 // 对于格式不好的json字符串, 需要设置此项
 reader.setLenient(true);

 final JsonArray original = new JsonParser().parse(reader).getAsJsonArray();

2.定义好List(排序的list)  将最初定义的json根据业务赋值给List

// 需要进行排序操作的list
List jsonValues = new ArrayList();

// 将最初定义的json根据业务赋值给List
for (int i = 0; i < original.size(); i++) {
    JsonElement jsonElement = original.get(i);
    if (jsonElement.getAsJsonObject().get("type").getAsInt() == TOPIC_INTRO || jsonElement.getAsJsonObject().get("type").getAsInt() == EIT_INTRO) {
        jsonValues.add(jsonElement.getAsJsonObject());
    }
    if (jsonElement.getAsJsonObject().get("type").getAsInt() == TEXT_INTRO && jsonElement.getAsJsonObject().get("content").getAsString().contains("@")) {
        jsonValues.add(jsonElement.getAsJsonObject());
    }
}
JsonObject textIntroJsonObj = new JsonObject();
textIntroJsonObj.addProperty("type", TEXT_INTRO);
textIntroJsonObj.addProperty("content", videoInfo.getIntroduction());
textIntroJsonObj.addProperty("userId", "");
jsonValues.add(textIntroJsonObj);

3. a定义接受排好序的JsonArray  b对List 进行排序并赋值给JsonArrary

// 接受排好序的JsonArrary
JsonArray newArray = new JsonArray();

// 对List 进行排序
Collections.sort(jsonValues, new Comparator() {
    @Override
    public int compare(JsonObject o1, JsonObject o2) {
        return o1.getAsJsonObject().get("type").getAsInt() - o2.getAsJsonObject().get("type").getAsInt();
    }
});

// 循环List 将排好序的json赋值给JsonArrary
for (int i = 0; i < jsonValues.size(); i++) {
    newArray.add(jsonValues.get(i));
}

 

你可能感兴趣的:(json,json)