Получение вложенного JsonArray внутри JsonObject с использованием Gson - PullRequest
0 голосов
/ 24 апреля 2020

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

public void getCategoriesTest() throws IOException {
        client = new HttpClientHandler(categoriesUrl, headersMap);
        String response = client.getRequest();
        response = "{\"success\":{\"total\":4},\"contents\":{\"categories\":[{\"name\":\"jod\",\"description\":\"Joke of the day \",\"language\":\"en\",\"background\":\"\"},{\"name\":\"animal\",\"description\":\"Animal Joke of the day \",\"language\":\"en\",\"background\":\"\"},{\"name\":\"blonde\",\"description\":\"Blonde joke of the day!\",\"language\":\"en\",\"background\":\"\"},{\"name\":\"knock-knock\",\"description\":\"Knock Knock joke of the day!\",\"language\":\"en\",\"background\":\"\"}],\"copyright\":\"2019-20 https://jokes.one\"}}";
        List<JsonArray> array = new ArrayList<>();
        array = FileUtil.asList(response, "contents.categories", JsonArray.class);

}

, и я использую этот метод generi c чтобы проанализировать JsonObject и вернуть JsonArray:

public static <T> List<T> asList(String json, String path, Class<T> clazz) {
        Gson gson = new Gson();
        String[] paths = path.split("\\.");
        JsonObject o = gson.fromJson(json, JsonObject.class);
        for (int i = 0; i < paths.length - 1; i++) {
            o = o.getAsJsonObject(paths[i]);
        }
        JsonArray jsonArray = o.getAsJsonArray(paths[paths.length - 1]);
        Class<T[]> clazzArray = (Class<T[]>) ((T[]) Array.newInstance(clazz, 0)).getClass();
        T[] objectArray = gson.fromJson(jsonArray, clazzArray);
        return Arrays.asList(objectArray);
    }

Но когда я запускаю функцию, в этой строке происходит сбой -> T [] objectArray = gson.from Json (jsonArray, clazzArray); Я получаю следующее сообщение об ошибке:

com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonArray but was com.google.gson.JsonObject

Несмотря на то, что я указал путь jsonarray наверняка. что мне не хватает?

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