【问题标题】:JSONObject cannot be converted to JSONArray in VolleyJSONObject 无法在 Volley 中转换为 JSONArray
【发布时间】:2019-03-29 12:27:28
【问题描述】:

here_is_json_api

还有我的代码

 ArrayRequest = new JsonArrayRequest(JSON_URL, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {

                JSONObject jsonObject = null;

                for (int i = 0 ; i<response.length();i++) {

                    try {
                       // JSONObject jsonObject = (JSONObject) response.get(i);
                       jsonObject = response.getJSONObject(i);
                        JSONObject jsonObjectt = jsonObject.getJSONObject("search_result");
                        Users users = new Users();
                        users.setId(jsonObjectt.getString("id"));
                        users.setUser(jsonObjectt.getString("User"));
                        users.setName(jsonObjectt.getString("name"));
                        users.setWho(jsonObjectt.getString("who"));
                        users.setImage(jsonObjectt.getString("image"));
                        userlist.add(users);
                    }
                    catch (JSONException e) {
                        e.printStackTrace();
                    }
                }

                setRvadapter(userlist);

我无法从 api 获取任何数据,它说 JSONObject 无法在 android 中转换为 JSONArray

【问题讨论】:

  • 很明显,您使用 JsonArrayRequest 请求数组,但返回的数据不是数组而是对象。
  • 我在这里看到很多这样的问题,但我无法用我的代码解决

标签: android json android-volley


【解决方案1】:

您正在使用 JsonArray 作为响应,并且您的 Web 服务返回一个 jsonobject

new JsonObjectRequest
                (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                        JSONArray teachers = response.getJSONArray("search_result");
                        for(int i = 0; i < teachers.length() ; i++) {
                            // do what ever you want with
                            Teacher teacher = new Teacher();
                            // here is how to get name
                            teacher.setId(teachers.getJSONObject(i).getString("name"));
                            // do the rest like this.
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO: Handle error
                }
            });

【讨论】:

  • 谢谢,我这样做了,但没有显示错误或数据,你能看到我的代码吗Code Link
  • 因为你使用的是try catch,所以你需要逐行调试,你就会知道它在哪一行崩溃了。也许错误的价值也许没有价值
  • 你是对的,它说“搜索结果没有值”但 api 不为空
  • 能否记录下回复的内容?
  • [日志在这里](pastebin.com/M62WFahN) ' JSONArray 教师 = response.getJSONArray("search_result");'这里是错误意味着没有价值,我请求你看看 api,'search_result' 是子值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 2020-07-11
  • 2023-03-21
相关资源
最近更新 更多