Optimize fetchArray

release
FongMi 1 month ago
parent ce4c4b7ae3
commit 1ed3c07aaf
  1. 18
      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();

Loading…
Cancel
Save