API YouTube: org. json .JSONException: нет значения для <param> - PullRequest
1 голос
/ 07 августа 2020

Ошибка при запуске моего проекта

 E/ChannelActivity:  New Video IdjxaQXUCdIt0
         New Video IdSz6U9KWa8s8
    W/System.err: org.json.JSONException: No value for videoId
            at org.json.JSONObject.get(JSONObject.java:389)
    W/System.err:     at org.json.JSONObject.getString(JSONObject.java:550)
            at android.com.demo.ChannelActivity$1.onResponse(ChannelActivity.java:73)
            at android.com.demo.ChannelActivity$1.onResponse(ChannelActivity.java:56)
            at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
            at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
            at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
            at android.os.Handler.handleCallback(Handler.java:754)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:165)
            at android.app.ActivityThread.main(ActivityThread.java:6375)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)

Вот мой код JSONObject

JSONObject jsonObject = new JSONObject(response);
                    JSONArray jsonArray=jsonObject.getJSONArray("items");
                    for(int i=0;i<jsonArray.length();i++) {
                        JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                        JSONObject jsonVideoId=jsonObject1.getJSONObject("id");
                        JSONObject jsonsnippet= jsonObject1.getJSONObject("snippet");
                        JSONObject jsonObjectdefault = jsonsnippet.getJSONObject("thumbnails").getJSONObject("medium");
                        String videoid=jsonVideoId.getString("videoId");



                        VideoDetails videoDetails=new VideoDetails();
                        videoDetails.setVideoid(videoid);
                        videoDetails.setTitle(jsonsnippet.getString("title"));
                        videoDetails.setDescribtion(jsonsnippet.getString("description"));
                        videoDetails.setUrl(jsonObjectdefault.getString("url"));

                        videoDetailsArrayList.add(videoDetails);

Для этого я создал ключ API и вставил его в мой проект. Шаги по созданию ключа API

Зарегистрируйтесь в учетной записи разработчика Google с помощью почты Google

Нажмите «Создать проект» с помощью стрелки раскрывающегося меню (API YouTube) вверху страницы и введите название проекта, например My YouTube Video App, затем нажмите кнопку Create.

Go в API Manager из бокового меню и выберите «Регистрация приложения в API YouTube», а затем нажмите «Enable API», после чего вы увидите уведомление который говорит Go учетным данным. Затем нажмите эту кнопку.

Новая страница появится как добавление учетных данных в ваш проект, выберите YouTube Data API v3, из которого вы используете API, и выберите Android, откуда вы будете вызывать API. Наконец, выберите Publi c data from dada accessing part, а затем нажмите кнопку Какие учетные данные мне нужны?

Затем скопируйте вставленный мой ключ API в мой проект.

1 Ответ

0 голосов
/ 07 августа 2020

Из вашего LogCat

   org.json.JSONException: No value for videoId

Похоже, что объект JSON не содержит никакого значения / сопоставления для параметра "videoId".

Чтобы проверить, JSON содержит определенный ключ, используйте has () .

Или вы можете использовать optString () для получения пустой строки, если сопоставление не существует.

...