Как получить json объект в массив, чтобы объект под объектом получить объект из массива - PullRequest
1 голос
/ 23 апреля 2020

Я хочу проанализировать полные данные, включая Episodes, Genre Array, но я использую залп lib и получаю Main Objects из массива "anime"!

Как я тоже получил данные массива Episodes? Любой простой метод?

Также я добавляю эти данные в данные одной модели, поэтому, пожалуйста, дайте мне понятный код.

Это мои json данные, получаемые из сети:

{
  "anime": [
    {
      "title": "Master",
      "img": "img.png",
      "synopsis": "Plot Summary:plot",
      "genres": [
        "adventure",
        "drama",
        "historical",
        "mystery",
        "seinen",
        "slice-of-life"
      ],
      "released": 1998,
      "status": "Completed",
      "otherName": "Master",
      "totalEpisodes": 39,
      "episodes": [
        {
          "id": "episode-1"
        },
        {
          "id": "episode-2"
        },
        {
          "id": "episode-3"
        },
        {
          "id": "episode-4"
        },
        {
          "id": "episode-5"
        },
        {
          "id": "episode-39"
        }
      ]
    },
    {
      "title": "Hyper Police",
      "img": "police.png",
      "synopsis": "Plot Summary: plot",
      "genres": [
        "action",
        "comedy",
        "police",
        "romance",
        "sci-fi"
      ],
      "released": 1997,
      "status": "Completed",
      "otherName": " ploci",
      "totalEpisodes": 25,
      "episodes": [
        {
          "id": "episode-1"
        },
        {
          "id": "episode-2"
        },
        {
          "id": "episode-3"
        },
        {
          "id": "episode-25"
        }
      ]
    }
  ]
}

Этот код, который я звоню из MainActivity, но не работает.


String url = "API URL";
    final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
        new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response)
        {
            try
            {
            JSONArray jsonArray = response.getJSONArray("anime");

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

                JSONArray data = hit.getJSONArray("episodes");

                // Extract JSONObject inside JSONObject
                JSONObject IDOb = data.getJSONObject(i);
                String ids = IDOb.getString("id");

                String title = hit.getString("title");
                String img = hit.getString("img");
                String synopsis = hit.getString("synopsis");
                        String genre = hit.getString("genres");
                        String release = hit.getString("released");
                        String status = hit.getString("status");
                        String otherName = hit.getString("otherName");
                        String totalEpisodes = hit.getString("totalEpisodes");
                mExampleList.add(new ExampleItem(title, img, synopsis, genre, release, status, otherName, totalEpisodes
                                 , ids));
                loadingPop.dismiss();
                Toast.makeText(getActivity(), "Data Refreshed", Toast.LENGTH_SHORT).show();
            }
            mExampleAdapter = new ExampleAdapter(getActivity(), mExampleList);
            mRecyclerView.setAdapter(mExampleAdapter);
            Toast.makeText(getActivity(), "Added Data", Toast.LENGTH_SHORT).show();
            //loadingPop.dismiss();
            }
            catch (JSONException e)
            {
            e.printStackTrace();
            Toast.makeText(getActivity(), "Catch" + e, Toast.LENGTH_LONG).show();
            loadingPop.dismiss();

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

1 Ответ

0 голосов
/ 23 апреля 2020

Я предполагаю, что проблема в том, чтобы получить полные episodes данные

Я постараюсь переписать ваш файл для l oop:

.....
.....

try
{


JSONArray animeArray = response.getJSONArray("anime");

//loop through anime array
for (int i = 0; i < animeArray.length(); i++){

//this should run for every object in anime
JSONObject animeObject = animeArray.getJSONObject(i);

//title
String title = animeObject.getString("title");

//img
String img = animeObject.getString("img");

//synopsis
String synopsis = animeObject.getString("synopsis");

//genres
JSONArray genresArray = animeObject.getJSONArray("genres");
String[] genres = new String[genresArray.length()];
for(int i = 0; i < genresArray.length(); i++){
genres[i] = genresArray.getString(i);
}

//released
int released = animeObject.getInt("released");

//status
String status = animeObject.getString("status");

//otherName
String otherName = animeObject.getString("otherName");

//totalEpisodes
int totalEpisodes = animeObject.getInt("totalEpisodes");


//episodes ids
JSONArray episodesArray = animeObject.getJSONArray("episodes");
String[] ids = new String[episodesArray.length()];
for(int i = 0; i < episodesArray.length(); i++){
ids[i] = episodesArray.getJSONObject(i).getString("id");
}





}//end loop


 mExampleList.add(new ExampleItem(title, img, synopsis, genres, released, status, 
 otherName, totalEpisodes,ids));



........
.........
........

Теперь вы меняете ваш ExampleItem конструктор

public ExampleItem(String title,String img,String synopsis,String[] genres,int released,String status,String otherName,int totalEpisodes,String[] ids){

  ..................
  .................

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