我是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();
}
答案 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。