我正在使用Youtube Api来获取频道ID,但是却收到了该错误。
我读了这个答案JSONException: No value for photo
但这无法解决我的问题。
这是一些JSON代码。
{
"kind":"youtube#activityListResponse",
"etag":"\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/OMMhc8F-t0SORJfXv_Owv4A3N_g\"",
"nextPageToken":"CAUQAA",
"pageInfo":{
"totalResults":20,
"resultsPerPage":5
},
"items":[
{
"kind":"youtube#activity",
"etag":"\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/WUtPyfC60sUnCViYyIHtr7rKu5E\"",
"id":"VTE1NjcxMTI0MzYxNDAyNDEzMTcwNzczOTI=",
"snippet":{
"publishedAt":"2019-08-29T21:00:36.000Z",
"channelId":"UC_x5XG1OV2P6uZZ5FSM9Ttw",
"title":"Android Studio 3.5, Cloud Run Button, BigQuery Terraform module",
这是java代码
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
try {
JSONObject jsonObject = new JSONObject(s);
Log.i("jsonObject ", jsonObject.toString());
String items= jsonObject.getString("items");
JSONArray arr = new JSONArray(items);
for (int i=0; i < arr.length(); i++) {
JSONObject jsonPart = arr.getJSONObject(i);
Log.i("ID",jsonPart.getString("channelId"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
我希望它将在logcat中显示此结果
"channelId":"UC_x5XG1OV2P6uZZ5FSM9Ttw"
但其显示此错误“ JSONException:channelId没有值”
最佳答案
所需的JSONArray
名称为items
,而不是snippets
。
您必须执行以下操作:
String items = jsonObject.getString("items");
JSONArray arr = new JSONArray(items);
for (int i=0; i < arr.length(); i++) {
JSONObject jsonPart = arr.getJSONObject(i);
JSONObject snippet = new JSONObject(jsonPart.getString("snippet"))
Log.i("ID",snippet.getString("channelId"));
}