在[duplicate]中有两个arraylists的数组的JSON解析

问题描述 投票:1回答:4

这个问题在这里已有答案:

我试图解析以下API数据。我只需要在我的应用程序中使用开始时间,结束时间,位置和事件名称。我之前从未解析过这种类型的数据。点击API URL并获得响应工作正常,我只需要解析帮助。

我尝试过这些解决方案,但它没有用。

  • 解析Android中的JSON 2阵列(嵌入式)
  • 如何在android中解析JSON(二维)数组对象?
  • 如何解析在android中有两个键和值的JsonArray和JSON对象?
  • 请求Android解析JSON多个数组。

JSON:

     [
    {
    "end": {
    "endDate": "2018-03-09",
    "endTime": "03:00",
    "_id": "5a901a7d9fee7d156d594b04"
    },
    "location": "Dance Tent",
    "start": {
    "startDate": "2018-03-09",
    "startTime": "02:00",
    "_id": "5a901a7d9fee7d156d594b05"
    },
    "announcementName": "Jumanji Dance Party"
    }
]

码:

    final JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(DATA_URL, new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {

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


                            try {
                                JSONObject jsonObject = response.getJSONObject(index);
                                String fullName = jsonObject.getString("startTime");
                                String about = jsonObject.getString("announcementName");
                                String artistType = jsonObject.getString("endTime");
                                String link = jsonObject.getString("location");
                                //String avatar = jsonObject.getString("avatar");

                               Annoucement_Day_One artistInfoGetter=new Annoucement_Day_One( fullName,about, artistType, link );
                                annoucementDayOneList.add(artistInfoGetter);
                                wednesdayAdapter.notifyDataSetChanged();

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

                        }}

            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.i("ERRROR RES: ", error.toString());
                    myInstance.dismiss();

                }
            });
            requestQueue.add(jsonArrayRequest);
android json android-volley
4个回答
2
投票

试试这个

    try {
        JSONArray jsonArray= new JSONArray(response);

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

            JSONObject object=jsonArray.getJSONObject(i);

            String location=object.getString("location");
            String announcementName=object.getString("announcementName");

            JSONObject end=object.getJSONObject("end");

            String endDate=end.getString("endDate");
            String endTime=end.getString("endTime");
            String id=end.getString("_id");


            JSONObject start=object.getJSONObject("start");

            String startDate=start.getString("startDate");
            String startTime=start.getString("startTime");
            String start_id=start.getString("_id");


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

2
投票

试试这个 ,

for (int index = 0; index < response.length(); index++) {
        try {
            JSONObject jsonObject = response.getJSONObject(index);

            JSONObject startJson = jsonObject.getJSONObject("start");
            String startTime = startJson.getString("startTime");

            JSONObject endJson = jsonObject.getJSONObject("end");
            String endTime = endJson.getString("endTime");

            String announcementName = jsonObject.getString("announcementName");
            String location = jsonObject.getString("location");

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

2
投票
ArrayList<Holder1> arrayList = new ArrayList<>();
        try {
            JSONArray jsonArray = new JSONArray(response);
            for(int index = 0 ;index < jsonArray.length() ; index++){
                JSONObject jsonObject1 = jsonArray.getJSONObject(index);
                //make a holder for end, location, start,announcementName
                Holder1 holder = new Holder1();
                holder.setLocation(jsonObject1.optString("location"));
                holder.setAnnouncementName(jsonObject1.optString("announcementName"));
                //------------
                JSONObject jsonObjectEnd =jsonObject1.getJSONObject("end");
                holder.setEndDate(jsonObjectEnd.optString("endDate"));
                holder.setEndTime(jsonObjectEnd.optString("endTime"));
                holder.setEndID(jsonObjectEnd.optString("_id"));
                //--------------
                JSONObject jsonObjectStart =jsonObject1.getJSONObject("start");
                holder.setStartDate(jsonObjectStart.optString("startDate"));
                holder.setStartTime(jsonObjectStart.optString("startTime"));
                holder.setStartID(jsonObjectStart.optString("_id"));
                //--------------
                arrayList.add(holder);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

接受答案。如果你喜欢我写的方式。


2
投票

您可以通过谷歌使用GSON库。

在build.gradle中添加依赖项。

compile 'com.google.code.gson:gson:2.8.0'

首先,您必须为JSON响应创建模型类。 this将帮助您创建模型类。

 public class MyPojo
{
    private Start start;

    private String location;

    private String announcementName;

    private End end;

    public Start getStart ()
    {
        return start;
    }


    public String getLocation ()
    {
        return location;
    }


    public String getAnnouncementName ()
    {
        return announcementName;
    }


    public End getEnd ()
    {
        return end;
    }



}

-------------- Start.Java ------------

 public class Start
    {
        private String startTime;

        private String startDate;

        private String _id;

        public String getStartTime ()
        {
            return startTime;
        }

        public String getStartDate ()
        {
            return startDate;
        }


        public String get_id ()
        {
            return _id;
        }

        }

------------ ------------------- End.Java

public class End
{
    private String _id;

    private String endDate;

    private String endTime;

    public String get_id ()
    {
        return _id;
    }

    public String getEndDate ()
    {
        return endDate;
    }

    public String getEndTime ()
    {
        return endTime;
    }
}

现在在你的onResponse方法中

       MyPojo respnse = new Gson().fromJson(response.toString(), MyPojo.class);

您可以从response.Ex访问任何方法。 response.getEnd().getEnd_date()

© www.soinside.com 2019 - 2024. All rights reserved.