Twitch API - чтение URL-адреса с помощью json в Java

Я хочу получить потоки, содержащие специальный тег (url: https://api.twitch.tv/kraken/search/streams?q=tag) и получить информацию о потоке, например. зрители, имя, ссылка на стрим. Я очень много пробовал, но ни один из кодов, которые я использовал, не работал. Может кто-то помочь мне с этим?

    try {
        String sURL = "https://api.twitch.tv/kraken/search/streams?q=starcraft";

        URL url = new URL(sURL);
        HttpURLConnection request = (HttpURLConnection) url.openConnection();
        request.connect();

        JsonParser jp = new JsonParser();
        JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
        JsonObject rootobj = root.getAsJsonObject();
        String id = rootobj.get("_id").getAsString();
        System.out.println(id);
    } catch (Exception ex) {
        ex.printStackTrace();
    }

person Dani Alwesz    schedule 17.07.2016    source источник
comment
Может быть, вы должны добавить код...   -  person Sal    schedule 17.07.2016
comment
Хорошо, я только что добавил код.   -  person Dani Alwesz    schedule 18.07.2016
comment
Кстати, до сих пор не ясно, в чем проблема. Тем не менее см. мой рабочий ответ.   -  person Sal    schedule 18.07.2016
comment
Проблема в том, что это вообще не работает. :) Какой ответ? Редактировать: я смотрю на это. :)   -  person Dani Alwesz    schedule 18.07.2016


Ответы (1)


    try 
        {
                    String sURL = "https://api.twitch.tv/kraken/search/streams?q=starcraft";

                    URL url = new URL(sURL);
                    HttpURLConnection request = (HttpURLConnection)url.openConnection();
                    request.connect();

                    JsonParser jp = new JsonParser();
                    JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
                    JsonArray streams = root.getAsJsonObject().get("streams").getAsJsonArray();
                    for (JsonElement stream : streams)
                    {
                        System.out.println(stream.getAsJsonObject().get("_id"));
                        JsonElement channel = stream.getAsJsonObject().get("channel");
                        System.out.println(channel.getAsJsonObject().get("display_name"));
                        System.out.println(channel.getAsJsonObject().get("url"));
                    }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

Проблема в том, что вы пытаетесь получить _id из корня вашего результата JSON, но в структуре есть элемент streams, который содержит все потоки.

HTH Сал

person Sal    schedule 17.07.2016
comment
Работает, могу получить первые 4 ключа: game, viewers, created_at и _id. Как получить канал раздела и ключи от него? - person Dani Alwesz; 18.07.2016
comment
Я хочу прочитать канал следующего раздела и получить оттуда ключи display_name и url. - person Dani Alwesz; 18.07.2016
comment
Спасибо, это работает! :D если у меня будет больше проблем с этим, я сообщу вам. Еще раз спасибо. :) - person Dani Alwesz; 18.07.2016