From 083eab815482ed2494fdf223d5643ffef9f4047d Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 15 Nov 2022 10:39:19 +0800 Subject: [PATCH] Fix crash --- .../java/com/fongmi/android/tv/player/ParseTask.java | 3 ++- .../main/java/com/fongmi/android/tv/utils/Json.java | 11 +++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/player/ParseTask.java b/app/src/main/java/com/fongmi/android/tv/player/ParseTask.java index 391f3b75d..eede285cb 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ParseTask.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ParseTask.java @@ -7,6 +7,7 @@ import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.net.OKHttp; import com.fongmi.android.tv.server.Server; import com.fongmi.android.tv.ui.custom.CustomWebView; +import com.fongmi.android.tv.utils.Json; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -77,7 +78,7 @@ public class ParseTask { HashMap headers = new HashMap<>(); for (String key : object.keySet()) if (key.equalsIgnoreCase("user-agent") || key.equalsIgnoreCase("referer")) headers.put(key, object.get(key).getAsString()); object = object.has("data") ? object.getAsJsonObject("data") : object; - onParseSuccess(headers, object.get("url").getAsString(), ""); + onParseSuccess(headers, Json.safeString(object, "url"), ""); } catch (Exception e) { e.printStackTrace(); onParseError(); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Json.java b/app/src/main/java/com/fongmi/android/tv/utils/Json.java index 21240b08f..5b2853a0f 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Json.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Json.java @@ -26,14 +26,17 @@ public class Json { } public static String safeString(JsonObject obj, String key) { - if (obj.has(key)) return obj.getAsJsonPrimitive(key).getAsString().trim(); - else return ""; + try { + return obj.getAsJsonPrimitive(key).getAsString().trim(); + } catch (Exception e) { + return ""; + } } public static List safeListString(JsonObject obj, String key) { List result = new ArrayList<>(); if (!obj.has(key)) return result; - if (obj.get(key).isJsonObject()) result.add(obj.get(key).getAsString()); + if (obj.get(key).isJsonObject()) result.add(safeString(obj, key)); else for (JsonElement opt : obj.getAsJsonArray(key)) result.add(opt.getAsString()); return result; } @@ -59,7 +62,7 @@ public class Json { HashMap map = new HashMap<>(); JsonObject object = safeObject(element); if (object == null) return map; - for (String key : object.keySet()) map.put(key, object.get(key).getAsString()); + for (String key : object.keySet()) map.put(key, safeString(object, key)); return map; } }