Получение элементов из JsonArray динамически независимо от типа, использующего GSON - PullRequest
0 голосов
/ 26 апреля 2020

Я получил этот JsonArray:

   "jokes": [
      {
        "description": "Knock Knock joke of the day!",
        "language": "en",
        "background": "",
        "category": "knock-knock",
        "date": "2019-12-02",
        "joke": {
          "title": "Knock Knock - Raoul who?",
          "lang": "en",
          "length": "64",
          "clean": "1",
          "racial": "0",
          "id": "GcLEyRMil3Od8VaaNtGo5QeF",
          "text": "Knock Knock\r\nWho's there?\r\nRaoul!\r\nRaoul who?\r\nRaoul of law!\r\n\r\n"
        }
      }
    ],
    "copyright": "2019-20 https://jokes.one"
  }
}

Я хочу иметь возможность извлекать любой элемент из массива json без значения для типа данных, например, если я хочу получить JsonObject joke Я реализовал эту функцию:

public static JsonObject getJsonObjectFromJsonArray(int index, String fieldName, JsonArray jsonArray) {
        return jsonArray.get(index).getAsJsonObject().get(fieldName).getAsJsonObject();
    }

и, если я хочу получить json элемент, который является строкой, я внедрил эту функцию:

   public static String getItemStringFromJsonArray(int index, String fieldName, JsonArray jsonArray){
        return jsonArray.get(index).getAsJsonObject().get(fieldName).getAsString();
    }

эти два последних метода выглядят одинаково, но вернуть разные типы данных, как я могу сделать это generi c?

1 Ответ

0 голосов
/ 26 апреля 2020

Ни одно профессиональное решение не может установить тип переменной как объект. Другое решение: если у значения есть какой-то общий результат, вы можете установить родительский класс и использовать его в качестве класса мэра при определении. Или (про решение для меня) используйте Java 11 и определите их как var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...