有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用截取方法获取ArrayList

这是我需要获取的ArrayList的示例,如何获取这个数组?我正在使用截取方法获取这个数组并显示在回收器视图中

[ { "_id": "a2a1", "name": "Flower", "image": { "_id": "a2a2", "name": "flower.jpg", "url": "/uploads/c8c8c.jpg", "related": [ "a2a1" ], "id": "0a2a2" }, }, { "_id": "433d", "name": "Bouquet", "id": "433d", "image": { "_id": "433e", "name": "baloon.jpg", "url": "/uploads/247db.jpg", "related": [ "433d" ], "id": "433e" }, }]

这是我使用截取方法获取数组的代码,我已经输入了正确的api,但是我没有得到数组的列表

  private void FlowerList(){

    StringRequest request = new StringRequest(
            Request.Method.GET,
            ServerApi.URL_FLOWER,

            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Gson gson = new GsonBuilder().create();


                    if(response != null) {

                        JSONObject json = null;

                        try {
                            json = new JSONObject(response);
                            FlowerModel[] models = gson.fromJson(String.valueOf(json.getJSONArray(null)), FlowerModel[].class);
                            flowerAdapter.addBatch(Arrays.asList(models));


                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }
            },

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

                }
            }

    );

    Volley.newRequestQueue(getContext()).add(request);

}

共 (2) 个答案

  1. # 1 楼答案

    试试这个。。。。我修改了你的密码

    ArrayList<String> stringArrayList;
    String id1,name,id2;
    
    StringRequest request = new StringRequest(
            Request.Method.GET,
            ServerApi.URL_FLOWER,
    
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Gson gson = new GsonBuilder().create();
    
    
                    if(response != null) {
    
                        JSONObject json = null;
    
                        try {
                            json = new JSONObject(response);
                            JSONArray jsonArray=json.getJSONArray("Your_response_arrayName");
                            stringArrayList=new ArrayList<>();
                            for(i=0;i<jsonArray.length;i++){
                                JSONObject jsonObject=jsonArray.getJSONObject(i);
                                stringArrayList.add(jsonObject);
    
    
                            }
    
    
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }
            },
    
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
    
                }
            }
    
    );
    
    Volley.newRequestQueue(getContext()).add(request);
    
    }
    

    希望这对你有帮助

  2. # 2 楼答案

    如果您使用的是Gson verson 2.8',则

    try {
                                json = new JSONObject(response);
                               ArrayList<FlowerModel> models = gson.fromJson(response, TypeToken.getParameterized(ArrayList.class, FlowerModel.class).getType());
                                //flowerAdapter.addBatch(Arrays.asList(models));
    
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
    

    对于旧版本

     try {
                                    json = new JSONObject(response);
                                   ArrayList<FlowerModel> models = gson.fromJson(response, new TypeToken<ArrayList<FlowerModel>>(){}.getType(););
                                    //flowerAdapter.addBatch(Arrays.asList(models));
    
    
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }