Как разобрать JSON-содержащий объект и JSON-массив без ключа? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть ответ в формате JSON, который я должен показать в активности. У меня проблема с массивом JSON, присутствующим в ответе. Я хочу разобрать его и показать данные об активности, в ответ массив "start_times", который я хочу показать только по одному данным за раз ...

Это ответ JSON, который я получаю с сервера

{
    "data": {
        "start_times": [
            [
                "08:00:00",
                "09:00:00"
            ],
            [
                "09:00:00",
                "10:00:00"
            ],
            [
                "10:00:00",
                "11:00:00"
            ]
        ],
        "mon": [
            {
                "subject__name": Electronics,
                "faculty__first_name": Manoj
            },
            {
                "subject__name": null,
                "faculty__first_name": null
            },
            {
                "subject__name": null,
                "faculty__first_name": null
            }
        ]
         }
}

Мой код:

  final StringRequest myStringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>()
  {

    @Override
    public void onResponse(String response)
    {
      Log.i(TAG, "Response-->" + response);
      System.out.println(response);
      try
      {
        JSONObject obj = new JSONObject(response);
        JSONObject obj2 = obj.getJSONObject("data");
        JSONArray timetable = obj2.getJSONArray("mon");

        JSONArray timeTableTime = obj2.getJSONArray("start_times");
        Log.d(TAG, "timeTableTime-->" + timeTableTime);

        Log.d(TAG, "TimetableLength-->" + timetable.length());
        for (int i = 0; i < timetable.length(); i++)
        {
          JSONObject heroObject = timetable.getJSONObject(i);

          mondayHero mon = new mondayHero(
              heroObject.getString("faculty__first_name"),
              heroObject.getString("subject__name"),
              heroObject.getString("faculty__first_name"),
              obj2.getJSONArray("start_times"));
          Log.d(TAG, "mon-->" + mon);
          mondayList.add(mon);

        }

        //creating custom adapter object
        mondayListViewAdaptor adapter = new mondayListViewAdaptor(mondayList, c.getApplicationContext());

        //adding the adapter to listview
        listView.setAdapter(adapter);

      }

    }
  }

Фактический результат =

Subject : Electronics
Faculty : Manoj
Time : [["08:00:00","09:00:00"],
       ["09:00:00","10:00:00"],
       ["10:00:00","11:00:00"]]

Subject : null
Faculty : null
Time : [["08:00:00","09:00:00"],
       ["09:00:00","10:00:00"],
       ["10:00:00","11:00:00"]]

Subject : null
Faculty : null
Time : [["08:00:00","09:00:00"],
       ["09:00:00","10:00:00"],
       ["10:00:00","11:00:00"]]

Ожидаемый результат (я хочу) = =

Subject : Electronics
Faculty : Manoj
Time : 08:00:00-09:00:00

Subject : null
Faculty : null
Time : 09:00:00-10:00:00

Subject : null
Faculty : null
Time : 10:00:00-11:00:00

Есть идеи, как решить эту проблему ??

1 Ответ

0 голосов
/ 16 апреля 2019

Вот исправленный код.Используйте массив timeTableTime в вашем цикле for

for (int i = 0; i < timetable.length(); i++) {
                        JSONObject heroObject = timetable.getJSONObject(i);
                        JSONObject timeObject = timetableTime.getJSONObject(i);

                        mondayHero mon = new mondayHero(
                                heroObject.getString("faculty__first_name"),
                                heroObject.getString("subject__name"),
                                heroObject.getString("faculty__first_name"),
                                timeObject);
                        Log.d(TAG,"mon-->"+mon);
                        mondayList.add(mon);


                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...