Как проанализировать данные JSON без имени массива? - PullRequest
0 голосов
/ 12 мая 2018

Я новичок в разборе JSON. Этот код работает. Но как я могу получить прямой доступ к «лайкам» и «webformatURL», если в массиве JSON не было «тотальных хитов» и «хитов»?

 private void parseJSON() {

    String url="https://pixabay.com/api/?key=8947271-cb39739eaa5835e1eaa2f53c6&q=yellow+flowers&image_type=photo&pretty=true";

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

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

                        String imageUrl = hit.getString("webformatURL");
                        int likeCount = hit.getInt("likes");

                        mExampleList.add(new ExampleItem(imageUrl, likeCount));
                    }

                    mExampleAdapter = new ExampleAdapter(MainActivity.this, mExampleList);
                    mRecyclerView.setAdapter(mExampleAdapter);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, 
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        }
    );
}

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете использовать библиотеку Google Gson для анализа вашего json непосредственно в объект ArrayList.

Вы можете сделать это.

        JsonArray itemArray = new JsonArray(response);
        Type listType = new TypeToken<List<Model>>() {
        }.getType();
        List<Model> yourList = new Gson().fromJson(itemArray, listType);
        for (Model model : yourList) {
            //  use this list
            System.out.println(model.toString());
        }

Вот ваш класс модели.

class Model {
    private int id;
    private String title;
    private long date_add;
    private String poster;


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public long getDate_add() {
        return date_add;
    }

    public void setDate_add(long date_add) {
        this.date_add = date_add;
    }

    public String getPoster() {
        return poster;
    }

    public void setPoster(String poster) {
        this.poster = poster;
    }

    @Override
    public String toString() {
        return "Model{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", date_add=" + date_add +
                ", poster='" + poster + '\'' +
                '}';
    }
}

Чтобы добавить Gson в ваш проект. Просто добавьте эту зависимость в ваш build.gradle

dependencies {
    compile 'com.google.code.gson:gson:2.8.4'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...