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

 

根据提供的引用内容,可以使用以下步骤根据JSONObject里面的属性进行排序: 1. 首先,将原始的JSONObject转换为List<JsonObject>,并将需要排序JsonObject添加到List。可以参考引用\[3\]的代码。 2. 接下来,使用Collections.sort方法对List<JsonObject>进行排序。在Comparator的compare方法,根据需要排序属性进行比较。可以参考引用\[2\]的代码。 3. 最后,将排序后的List<JsonObject>赋给新的JsonArray。可以使用循环遍历List<JsonObject>,将每个JsonObject添加到新的JsonArray。可以参考引用\[2\]的代码。 通过以上步骤,就可以根据JSONObject里面的属性进行排序。 #### 引用[.reference_title] - *1* [java如何给对象按照字符串属性进行排序](https://blog.csdn.net/jh035512/article/details/127947830)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [根据json对象一个属性进行排序](https://blog.csdn.net/quKbin/article/details/88418820)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值