解析网络请求到的json数据

作者: 8848钛金手机 | 来源:发表于2018-08-07 11:41 被阅读22次

    使用okhttp的 post请求得到json数据, 那么怎么去把这组json数据解析出来呢?
    首先使用okhttp去post请求到数据


    点击事件以后   
    {
    //创建网络处理的对象

    OkHttpClient client =new OkHttpClient.Builder()

    .readTimeout(5, TimeUnit.SECONDS)

    .build();

    //post请求来获得数据

    //创建一个RequestBody,存放重要数据的键值对

    RequestBody body =new FormBody.Builder()

    .add("*********", "**********")//(****)为某个App接口文档里的数据(必填)

    .add("**********", "*********").build();

    //创建一个请求对象,传入URL地址和相关数据的键值对的对象

    Request request =new Request.Builder()

    .url("*************************")//App接口文档的网站名(必填)

    .post(body).build();

    //创建一个能处理请求数据的操作类

    Call call = client.newCall(request);

    //使用异步任务的模式请求数据

    call.enqueue(new Callback() {

    @Override

        public void onFailure(Call call, IOException e) {

         Log.e("TAG", "错误信息" + e.toString());


        }


    @Override

        public void onResponse(Call call, Response response)throws IOException {

        Log.e("TAG", response.body().string());

    });


    然后得到一组json数据  如果感觉格式看着有点乱,就把它复制到在线json检验格式化工具里格式化一下


    {

    "success": "1",

    "dz": {

    "company_id": "10",

    "title": "wecan",

    "is_complete": "1"

    },

    "dy": {

    "user_id": "12",

    "is_complete": "1"

    }

    }


    定义一个类,声明json里面的数据 (类名自定义)


    public class LoginResp {

    private Stringsuccess;

        private Dzdz;

        private Dydy;

        public StringgetSuccess() {

    return success;

        }

    public void setSuccess(String success) {

    this.success = success;

        }

    public void setDz(Dz dz){

    this.dz = dz;

        }

    public DzgetDz(){

    return dz;

        }

    public void setDy(Dy dy){

    this.dy = dy;

        }

    public DygetDy(){

    return dy;

        }

    }


    再定义一个Dz类 (类名自定义)


    public class Dz {

    private int company_id;

        private Stringtitle;

        private int is_complete;

        public void setcompany_id(int company_id){

    this.company_id = company_id;

        }

    public int getCompany_id(){

    return company_id;

        }

    public void setTitle(String title){

    this.title = title;

        }

    public StringgetTitle(){

    return title;

        }

    public void setIs_complete(int is_complete){

    this.is_complete = is_complete;

        }

    public int is_complete(){

    return is_complete;

        }

    }


    再定义一个Dy类 (类名自定义)


    public class Dy {

    private int user_id;

        private int is_complete1;

        public void setUser_id(int user_id){

    this.user_id = user_id;

        }

    public int getUser_id(){

    return user_id;

        }

    public void setIs_complete1(int is_complete1){

    this.is_complete1 = is_complete1;

        }

    public int getIs_complete1(){

    return is_complete1;

        }

    }


    在onResponse方法里写以下代码


    String json = response.body().string();

    LoginResp loginResp =new Gson().fromJson(json,LoginResp.class);

    System.out.println("success: "+loginResp.getSuccess());

    System.out.println("company_id: "+loginResp.getDz().getCompany_id());

    System.out.println("title: "+loginResp.getDz().getTitle());

    System.out.println("is_complete: "+loginResp.getDz().getCompany_id());

    System.out.println("user_id: "+loginResp.getDy().getUser_id());

    System.out.println("is_complete1: "+loginResp.getDy().getIs_complete1());


    注意:写完解析json数据的代码后,把Log.e("TAG", response.body().string()); 这行代码注释掉,

    不然程序会闪退。


    运行结果:


    System.out: success: 1

    System.out: company_id: 10

    System.out: title: wecan

    System.out: is_complete: 10

    System.out: user_id: 12

    System.out: is_complete1: 0

    相关文章

      网友评论

        本文标题:解析网络请求到的json数据

        本文链接:https://www.haomeiwen.com/subject/vkuovftx.html