Ошибка при парсинге Gson

245
02 января 2018, 15:19

код:

        Object obj = new JsonParser().parse("https://tmi.twitch.tv/group/user/farmerjo0/chatters");
    JsonObject jo = (JsonObject) obj;
    JsonObject chatters = (JsonObject)jo.get("chatters"); 
    JsonArray viewers = (JsonArray) chatters.get("viewers");
    Iterator<JsonElement> user = viewers.iterator();
    while(user.hasNext()) {
        JsonElement test =  user.next();
        System.out.println(test.getAsString());
    }

Ошибка:

Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected EOF at line 1 column 6
at com.google.gson.JsonParser.parse(JsonParser.java:65)
at com.google.gson.JsonParser.parse(JsonParser.java:45)
at gson.Main.main(Main.java:21)Caused by: com.google.gson.stream.MalformedJsonException: Expected EOF at line 1 column 6
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1310)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:390)
at com.google.gson.JsonParser.parse(JsonParser.java:60)
... 2 more

Когда парсю файл, то все хорошо, но при парсинге сылки выдает ошибку. как это исправиить ?

Answer 1

Согласно документации метод JsonParser.parse имеет три перегруженных разновидности

JsonElement parse(JsonReader json)  // Returns the next value from the JSON stream as a parse tree.
JsonElement parse(Reader json)  // Parses the specified JSON string into a parse tree
JsonElement parse(String json)  // Parses the specified JSON string into a parse tree

Т.е. в него нельзя передать ни имя файла, ни ссылку. Если Вы передаете строку, то парсер ожидает увидеть в этой строке валидный JSON и ничего более. Если Вам нужно спарсить ссылку из интернета, то Вам нужно использовать, примерно, такой код

URL url = new URL("https://tmi.twitch.tv/group/user/farmerjo0/chatters");
try (BufferedReader in = new BufferedReader(
        new InputStreamReader(url.openStream())))
{
  Object obj = new JsonParser().parse(in);
}
READ ALSO
Не работает Design в Android Studio

Не работает Design в Android Studio

Доброго Вам времени сутокС наступающим всех

399
Сторонние библиотеки InteliJ IDEA

Сторонние библиотеки InteliJ IDEA

Для задания понадобилась библиотекаНужна помощь с ее установкой

332
Аналоги Hibernate для Android

Аналоги Hibernate для Android

Мне нужно сгенерировать классы на основе таблиц из базы данных PostgresqlЧерез hibernate у меня это получалось но сейчас у меня задача сделать для...

215