无法访问JSON对象数组

时间:2018-03-23 17:20:27

标签: android json

我是Android Studio和Java的新手,我正在开发一个从Unsplash's API获取数据并显示它的应用程序。但是,我收到了JSON typeMismatch错误,我不确定如何正确提取数据。从技术上讲,我正在返回一个JSONObjects数组,但我发现只是将JSONObject更改为JSONArray并不是正确的方法。

我认为问题在于以下几行代码:我想要做的是获取用户(摄影师)的姓名和个人资料图片,以及他们发布的图片。

非常感谢任何帮助!

private NewPhotos getNewPhotos(String jsonData) throws JSONException {
  JSONObject unsplash = new JSONObject(jsonData);

  JSONObject user = unsplash.getJSONObject("user");

  return new NewPhotos();
}

This is the JSON I'm getting back

This is the error message

3 个答案:

答案 0 :(得分:1)

首先需要投射JSON ARRAY。

您没有放入所有json文件,但它似乎是第一个数组。

private NewPhotos getNewPhotos(String jsonData) throws JSONException {
  JSONArray unsplash = new JSONArray(jsonData);

  for (int i = 0; i < unsplash.length(); i++) {
    JSONObject jsonObj = (JSONObject) unsplash.get(i);
    JSONObject user = jsonObj.getJSONObject("user");
    // Do something with user
  }

  // Your implementation
  return new NewPhotos();
}

答案 1 :(得分:0)

这不适合你吗? :

 JSONObject unsplash = new JSONObject(jsonData);
 JSONArray user = unsplash.getJSONArray("user");

在您的代码中导致您尝试将jsonArray分配给jsonObject。

答案 2 :(得分:0)

您无法将JSON数组转换为Json对象。拉斐拉是对的。您需要在Json数组中传递字符串,然后遍历每个对象以访问用户json。

相关问题