当我想从 ArrayList 中的请求 json 添加一个对象时

Posted

技术标签:

【中文标题】当我想从 ArrayList 中的请求 json 添加一个对象时【英文标题】:When i want add a object from request json in an ArrayList 【发布时间】:2016-04-22 05:08:53 【问题描述】:

好吧,我通过 url 查询一个 JSON 对象,我得到该对象并将其添加到一个字符串中,好吧,问题是当我将它添加到 ArrayList 时,这一行被跳过并且在我们添加时不执行,有人知道为什么吗?

public void consult(String val_user)

    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
            "http://"+ippref+":8080/Activo/webresources/activo.entities.historialactivos/consulta/"+val_user+"", new Response.Listener<JSONArray>() 
        @Override
        public void onResponse(JSONArray response) 

            String item = "";
            for (int i = 0; i < response.length(); i++) 
                try 

                    JSONObject obj = response.getJSONObject(i);

                    item += "Actividad: " + obj.getString("actividad") + "\r\n";
                    item += "Activo NS: " + obj.getString("activo") + "\r\n";
                    item += "Fecha: " + obj.getString("fecha") + "\r\n";
                    item += "Id Activo: " + obj.getString("idActivo") + "\r\n";
                    item += "Id Historial: " + obj.getString("idHistorialActivo") + "\r\n";
                    item += "Id Incidencia: " + obj.getString("idIncidencia") + "\r\n";
                    item += "Id Usuario: " + obj.getString("idUsuario") + "\r\n";
                    item += "Incidencia: " + obj.getString("incidencia") + "\r\n";
                    item += "Observaciones: " + obj.getString("observaciones") + "\r\n";
                    item += "Oficina: " + obj.getString("oficina") + "\r\n";
                    item += "Tipo de movimiento: " + obj.getString("tipoMovimiento") + "\r\n";
                    item += "Usuario: " + obj.getString("usuario" + "\r\n");

                    array.add(item);

                    item = "";


                 catch (JSONException ex) 
                    ex.printStackTrace();
                
                metodo_adapter();
                adapter.notifyDataSetChanged();

            
        

    , new Response.ErrorListener() 
        @Override
        public void onErrorResponse(VolleyError error) 

        
    );
    AppController.getInstance().addToRequestQueue(jsonArrayRequest);

array.add(item) 中,当我执行调试时跳过这行代码。

【问题讨论】:

【参考方案1】:
array.add(item);
item = ""; // This line is causing issue.

不要像这样让你的项目字符串为空,因为字符串是一个基于引用的变量,如果你这样做,你最终会在你的数组中存储“”。

最好在 try 块中定义您的 String item = "";

【讨论】:

我删除了那行但还是同样的错误,行array.add(item) 执行点失败,不要添加 我期待它以这种方式工作。请问您是如何声明和启动“数组”的? 私有列表 arrayactivos = new ArrayList();【参考方案2】:

唯一的问题是因为你放了

String item = "";

在for循环之外,这意味着所有数组列表都查找单个对象,意味着只有最后一个会有数据

解决方案必须这样做

     for (int i = 0; i < response.length(); i++) 
                try 
String item = "";
                    JSONObject obj = response.getJSONObject(i);

                    item += "Actividad: " + obj.getString("actividad") + "\r\n";
                    item += "Activo NS: " + obj.getString("activo") + "\r\n";
                    item += "Fecha: " + obj.getString("fecha") + "\r\n";
                    item += "Id Activo: " + obj.getString("idActivo") + "\r\n";
                    item += "Id Historial: " + obj.getString("idHistorialActivo") + "\r\n";
                    item += "Id Incidencia: " + obj.getString("idIncidencia") + "\r\n";
                    item += "Id Usuario: " + obj.getString("idUsuario") + "\r\n";
                    item += "Incidencia: " + obj.getString("incidencia") + "\r\n";
                    item += "Observaciones: " + obj.getString("observaciones") + "\r\n";
                    item += "Oficina: " + obj.getString("oficina") + "\r\n";
                    item += "Tipo de movimiento: " + obj.getString("tipoMovimiento") + "\r\n";
                    item += "Usuario: " + obj.getString("usuario" + "\r\n");

                    array.add(item);

                    item = "";


                 catch (JSONException ex) 
                    ex.printStackTrace();
                
                metodo_adapter();
                adapter.notifyDataSetChanged();

            

会解决你的问题

【讨论】:

以上是关于当我想从 ArrayList 中的请求 json 添加一个对象时的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax请求发布大型JSON对象

ArrayList.add 不适用于 AsyncTask

安全地处理节点中的错误 JSON.parse()

在 android [JAVA] 中的多个 Arraylist 中添加 JSON 数组

使用Spring-Data-JPA进行Spring启动:每次请求时都会填充ArrayList / JSON对象

如何使用 C# 在 POST 请求中发送 json 请求正文数据