将JsonArray转换为ArrayList

时间:2018-10-12 17:28:52

标签: java arrays json arraylist

我有使用YoutubeAPI获得的json:

Restore-DbaDatabase -SqlInstance servername -DatabaseName databasename -Path C:\Temp\filename.bak -WithReplace -useDestinationDefaultDirectories -ReplaceDbNameInFile

我想将“ id”保存在ArrayList上,但是我有一些问题,这是我使用的代码:

{
 "items": [
  {
   "id": {
    "videoId": "ob1ogBV9_iE"
   },
   "snippet": {
    "title": "13 estrellas ",
    "description": "Pueden encontrar estas "
   }
  },
  {
   "id": {
    "videoId": "o9vsXyrola4"
   },
   "snippet": {
    "title": "Rayos Cósmicos ",
    "description": "Este es un programa piloto "
   }
  }
]
}

在这一行中,我使用首先创建的JSON对象创建了JSONarray

JSONArray jsonArray = myResponse.getJSONArray("items");

我的问题是如何访问此字段?以及我该如何保存

2 个答案:

答案 0 :(得分:1)

您有两个主要问题。首先是"videoID""videoId"不是相同的字符串。因此,您正在检查不存在的密钥。

您的第二个问题是,"videoId"键在顶级对象中不存在,而是在"id"对象中,因此您需要深入研究以获得它:

    JSONArray jsonArray = myResponse.getJSONArray("items");
    ArrayList<String> list = new ArrayList<>();
    for (int i = 0; i < jsonArray.length(); i++) {
        try {
            JSONObject json = jsonArray.getJSONObject(i);
            JSONObject id = json.getJSONObject("id");

            list.add(id.getString("videoId"));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    System.out.println(list);  // [ob1ogBV9_iE, o9vsXyrola4]

答案 1 :(得分:0)

尝试使用正确的大小写videoId,例如

list.add(json.getString("videoId"));