学而实习之 不亦乐乎

Android:获取 Json 数据并解析

2020-12-23 19:43:23
环境:Android
软件:OkHttp,Gson

1.创建 JavaBean

根据 json 数据创建相应的 JavaBean

public class Bean {

    private String date;

    private List<StoriesBean> stories;

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public List<StoriesBean> getStories() {
        return stories;
    }

    public void setStories(List<StoriesBean> stories) {
        this.stories = stories;
    }

    public static class StoriesBean {

        private int type;

        private int id;

        private String ga_prefix;

        private String title;

        private boolean multipic;

        private List<String> images;

        public int getType() {
            return type;
        }

        public void setType(int type) {
            this.type = type;
        }

        public int getId() {
            return id;
        }

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

        public String getGa_prefix() {
            return ga_prefix;
        }

        public void setGa_prefix(String ga_prefix) {
            this.ga_prefix = ga_prefix;
        }

        public String getTitle() {
            return title;
        }

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

        public boolean isMultipic() {
            return multipic;
        }

        public void setMultipic(boolean multipic) {
            this.multipic = multipic;
        }

        public List<String> getImages() {
            return images;
        }

        public void setImages(List<String> images) {
            this.images = images;
        }

        @Override
        public String toString() {
            return "标题='" + title + '\'' + "图片链接=" + images;
        }
    }
}

2.将 json 解析成 JavaBean

这里使用了 OkHttp 进行网络请求,并使用 Gson 对 json 数据进行解析。

public void parseJson(View view) {
        OkHttpClient client = new OkHttpClient();
        final Gson gson = new Gson();
        Request request = new Request.Builder()
                .url("http://xxx.xxx.com/file")
                .build();

        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                ToastUtil.showToast(ParseJsonActivity.this, "parse Json 失败");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                ToastUtil.showToast(ParseJsonActivity.this, "Code:" + String.valueOf(response.code()));
                final Bean bean = gson.fromJson(response.body().charStream(), Bean.class);
                List<Bean.StoriesBean> stories = bean.getStories();
                final StringBuilder stringBuilder = new StringBuilder();
                for (Bean.StoriesBean storiesBean : stories) {
                    stringBuilder.append(storiesBean);
                    stringBuilder.append("\n\n\n");
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        tv_result.setText(stringBuilder.toString());
                    }
                });
            }
        });
    }