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 f165b0bc9..6986ec41b 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 @@ -103,13 +103,19 @@ abstract class BaseConfig { protected JsonArray fetchArray(JsonObject object, String key) { if (!object.has(key)) return new JsonArray(); JsonElement element = object.get(key); - if (element.isJsonArray()) return element.getAsJsonArray(); - if (!element.isJsonPrimitive()) return new JsonArray(); + if (element.isJsonObject()) return new JsonArray(); + if (element.isJsonPrimitive()) element = fetch(element.getAsString()); + JsonArray result = new JsonArray(); + for (JsonElement item : element.getAsJsonArray()) { + if (item.isJsonPrimitive()) result.addAll(fetch(item.getAsString())); + else if (item.isJsonObject()) result.add(item); + } + return result; + } + + private JsonArray fetch(String url) { try { - String value = element.getAsString().trim(); - String json = OkHttp.string(UrlUtil.convert(value)); - if (TextUtils.isEmpty(json)) return new JsonArray(); - JsonElement parsed = JsonParser.parseString(json); + JsonElement parsed = JsonParser.parseString(OkHttp.string(UrlUtil.convert(url))); return parsed.isJsonArray() ? parsed.getAsJsonArray() : new JsonArray(); } catch (Exception e) { return new JsonArray();