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<JsonObject>(排序的list) 将最初定义的json根据业务赋值给List<JsonObject>
// 需要进行排序操作的list<JsonObject>
List<JsonObject> jsonValues = new ArrayList<JsonObject>();
// 将最初定义的json根据业务赋值给List<JsonObject>
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<JsonObject> 进行排序并赋值给JsonArrary
// 接受排好序的JsonArrary
JsonArray newArray = new JsonArray();
// 对List<JsonObject> 进行排序
Collections.sort(jsonValues, new Comparator<JsonObject>() {
@Override
public int compare(JsonObject o1, JsonObject o2) {
return o1.getAsJsonObject().get("type").getAsInt() - o2.getAsJsonObject().get("type").getAsInt();
}
});
// 循环List<JsonObject> 将排好序的json赋值给JsonArrary
for (int i = 0; i < jsonValues.size(); i++) {
newArray.add(jsonValues.get(i));
}