#java #android #json #youtube
#java #Android #json #YouTube
Вопрос:
Я пытаюсь получить значение из данных json (API YouTube V3).
String jsonText = readFromUrl(channerUrl);// channerUrl = Youtube V3 API Link
JSONObject json = new JSONObject(jsonText);
System.out.println(json.getString("videoId"));
Но у меня есть это в моем журнале :
I/System.out: org.json.JSONException: No value for videoId
Данные с YouTube :
{
"kind": "youtube#playlistItemListResponse",
"etag": ""xxxx"",
"nextPageToken": "xxx",
"pageInfo": {
"totalResults": 321,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#playlistItem",
"etag": ""xxxx"",
"id": "xxxx",
"contentDetails": {
"videoId": "The Value Want"
}
}
]
}
Почему у меня есть No value for videoId
?
Спасибо
РЕДАКТИРОВАТЬ (тоже не сработало): (jsonText) — это ссылка на данные JSON
JSONObject json = new JSONObject(jsonText);
List<String> list = new ArrayList<String>();
JSONArray array = json.getJSONArray("items");
for(int i = 0 ; i < array.length() ; i ){
list.add(array.getJSONObject(i).getString("contentDetails"));
System.out.println(json.getString("contentDetails"));
}
Ответ №1:
Потому videoId
что находится под items
объектом. item
Сначала получить, затем получить его first child
, а затем videoId
Редактировать: использовать
array.getJSONObject(i).getJSONObject("contentDetails").getString("videoId")
И удалите println
строку
Затем вне цикла просто распечатайте список, содержащий videoId
Комментарии:
1. Хорошо, так
videoID
вcontentDetails
том, кто вitems
? Как я могу получитьitem
первое?2. Найдите методы GetObject и getArray и используйте их
3. Я отредактировал свой первый пост, я попробовал использовать методы getArray, но это тоже не сработало
Ответ №2:
используйте этот код :
JSONObject json = new JSONObject(jsonText);
List<String> list = new ArrayList<String>();
JSONArray array = null;
try {
array = json.getJSONArray("items");
} catch (JSONException e) {
e.printStackTrace();
}
for(int i = 0 ; i < array.length() ; i ){
// list.add(array.getJSONObject(i).getString("contentDetails"));
try {
System.out.println(array.getJSONObject(i).getJSONObject("contentDetails").getString("videoId"));
} catch (JSONException e) {
e.printStackTrace();
}
}
Ответ №3:
try
{
JSONObject mJsonObject = new JSONObject(strValue);
JSONArray items = mJsonObject.getJSONArray("items");
String nextToken = mJsonObject.getString("nextPageToken").toString();
for(int i = 0;i<items.length();i )
{
JSONObject snipetts = items.getJSONObject(i);
JSONObject snipet = snipetts.getJSONObject("snippet");
JSONObject thumbnails = snipet.getJSONObject("thumbnails");
JSONObject highImage = thumbnails .getJSONObject("high");
String title = snipet.get("title").toString();
String urlImage = highImage.get("url").toString();
String videoID = snipetts.getString("id");
String description = snipet.getString("description");
String publishDate = snipet.getString("publishedAt");
}
}
catch (Exception e)
{
e.printStackTrace();
}