根据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<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));
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值