From b49287e857062d8e4235f3c956cbf2ed8bb0eb8b Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 12 May 2026 00:48:17 +0800 Subject: [PATCH] Fix json parse for android 9 --- .../com/fongmi/android/tv/api/config/BaseConfig.java | 4 ++-- .../com/fongmi/android/tv/api/config/LiveConfig.java | 3 +-- .../com/fongmi/android/tv/api/config/VodConfig.java | 3 +-- .../com/fongmi/android/tv/api/parser/LiveParser.java | 5 ++--- .../java/com/fongmi/android/tv/player/ParseJob.java | 3 +-- .../java/com/fongmi/android/tv/utils/ImgUtil.java | 3 +-- .../src/main/java/com/github/catvod/utils/Json.java | 12 ++++++++++-- 7 files changed, 18 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java index a3c3d49a7..f3af7bafc 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/BaseConfig.java @@ -14,10 +14,10 @@ import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.bean.Header; import com.github.catvod.bean.Proxy; import com.github.catvod.net.OkHttp; +import com.github.catvod.utils.Json; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import java.io.InterruptedIOException; import java.util.List; @@ -128,7 +128,7 @@ abstract class BaseConfig { private JsonArray fetch(String url) { try { - JsonElement parsed = JsonParser.parseString(OkHttp.string(UrlUtil.convert(url))); + JsonElement parsed = Json.parse(OkHttp.string(UrlUtil.convert(url))); return parsed.isJsonArray() ? parsed.getAsJsonArray() : new JsonArray(); } catch (Exception e) { return new JsonArray(); diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java index d4a3050b4..4d62aa7d4 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java @@ -22,7 +22,6 @@ import com.github.catvod.bean.Header; import com.github.catvod.bean.Proxy; import com.github.catvod.utils.Json; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import java.util.ArrayList; import java.util.Collections; @@ -116,7 +115,7 @@ public class LiveConfig extends BaseConfig { @Override protected void load(Config config) throws Throwable { String json = Decoder.getJson(UrlUtil.convert(config.getUrl()), TAG); - if (Json.isObj(json)) checkJson(config, JsonParser.parseString(json).getAsJsonObject()); + if (Json.isObj(json)) checkJson(config, Json.parse(json).getAsJsonObject()); else parseText(config, json); } diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java index 3a3f6a731..5f8704216 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java @@ -19,7 +19,6 @@ import com.github.catvod.bean.Header; import com.github.catvod.bean.Proxy; import com.github.catvod.utils.Json; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import java.util.ArrayList; import java.util.Collections; @@ -113,7 +112,7 @@ public class VodConfig extends BaseConfig { @Override protected void load(Config config) throws Throwable { String json = Decoder.getJson(UrlUtil.convert(config.getUrl()), TAG); - checkJson(config, JsonParser.parseString(json).getAsJsonObject()); + checkJson(config, Json.parse(json).getAsJsonObject()); } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/api/parser/LiveParser.java b/app/src/main/java/com/fongmi/android/tv/api/parser/LiveParser.java index c614ad55d..98e0adf5a 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/parser/LiveParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/parser/LiveParser.java @@ -11,7 +11,6 @@ import com.fongmi.android.tv.bean.Live; import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Json; -import com.google.gson.JsonParser; import java.util.HashMap; import java.util.Map; @@ -303,8 +302,8 @@ public class LiveParser { private void header(String line) { try { - if (line.contains("#EXTHTTP:")) header.putAll(Json.toMap(JsonParser.parseString(line.split("#EXTHTTP:")[1].trim()))); - if (line.contains("header=")) header.putAll(Json.toMap(JsonParser.parseString(line.split("header=")[1].trim()))); + if (line.contains("#EXTHTTP:")) header.putAll(Json.toMap(Json.parse(line.split("#EXTHTTP:")[1].trim()))); + if (line.contains("header=")) header.putAll(Json.toMap(Json.parse(line.split("header=")[1].trim()))); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java b/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java index b20250878..cf57424b3 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ParseJob.java @@ -20,7 +20,6 @@ import com.github.catvod.utils.Util; import com.google.common.net.HttpHeaders; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import java.util.ArrayList; import java.util.HashMap; @@ -116,7 +115,7 @@ public class ParseJob implements ParseCallback { private void jsonParse(Parse item, String webUrl, boolean fatal) throws Exception { try (Response res = OkHttp.newCall(item.getUrl() + webUrl, item.getHeader()).execute()) { - JsonObject object = JsonParser.parseString(res.body().string()).getAsJsonObject(); + JsonObject object = Json.parse(res.body().string()).getAsJsonObject(); String url = Json.safeString(object, "url"); JsonObject data = object.getAsJsonObject("data"); if (url.isEmpty()) url = Json.safeString(data, "url"); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java index b1884207a..37a1f43d5 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java @@ -27,7 +27,6 @@ import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.impl.CustomTarget; import com.github.catvod.utils.Json; import com.google.common.net.HttpHeaders; -import com.google.gson.JsonParser; import java.util.Collections; import java.util.HashSet; @@ -95,7 +94,7 @@ public class ImgUtil { } private static void addHeader(LazyHeaders.Builder builder, String header) { - Map map = Json.toMap(JsonParser.parseString(header)); + Map map = Json.toMap(Json.parse(header)); for (Map.Entry entry : map.entrySet()) builder.addHeader(UrlUtil.fixHeader(entry.getKey()), entry.getValue()); } diff --git a/catvod/src/main/java/com/github/catvod/utils/Json.java b/catvod/src/main/java/com/github/catvod/utils/Json.java index 0c2b598af..cb813e381 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Json.java +++ b/catvod/src/main/java/com/github/catvod/utils/Json.java @@ -16,6 +16,14 @@ import java.util.Map; public class Json { + public static JsonElement parse(String json) { + try { + return Json.parse(json); + } catch (Throwable e) { + return new JsonParser().parse(json); + } + } + public static boolean isObj(String text) { try { if (TextUtils.isEmpty(text)) return false; @@ -71,7 +79,7 @@ public class Json { public static JsonObject safeObject(JsonElement element) { try { - if (element.isJsonPrimitive()) element = JsonParser.parseString(element.getAsJsonPrimitive().getAsString()); + if (element.isJsonPrimitive()) element = parse(element.getAsJsonPrimitive().getAsString()); return element.getAsJsonObject(); } catch (Exception e) { return new JsonObject(); @@ -79,7 +87,7 @@ public class Json { } public static Map toMap(String json) { - return TextUtils.isEmpty(json) ? null : toMap(JsonParser.parseString(json)); + return TextUtils.isEmpty(json) ? null : toMap(parse(json)); } public static Map toMap(JsonElement element) {