如何使用gson和volley解析嵌套的json?

thi*_*nke 0 android gson android-volley

这是我想要使用的json数据:

{
     "name" : "Ravi Tamada", 
     "email" : "ravi8x@gmail.com",
     "phone" : 
      {
         "home" : "08947 000000",
         "mobile" : "9999999999"
      }

}
Run Code Online (Sandbox Code Playgroud)

这是我的JsonObjectRequest:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, APITEST,null, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject jsonObject) {

            Gson gson = new Gson();
            People people;
            people = gson.fromJson(jsonObject.toString(),People.class);
            tv_city.setText(""+people.email);

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



        }
    });
Run Code Online (Sandbox Code Playgroud)

没关系tv_city.setText(""+ people.email())...


这是我的javabean类:

public class People {

    public String name ;
    public String email;

    public class Phone{
        public String home;
        public String mobile;

    }

}
Run Code Online (Sandbox Code Playgroud)

现在我想得到"家"号,怎么样?

Ada*_*dav 6

1-您必须按如下方式更新您的bean类: -

public class People implements Serializable {
private String name ;
private String email;
private Phone phone;

 public Phone getPhone () {
    return phone;
}

public void setPhone (Phone phone) {
    this.phone = phone;
}
public String getName () {
    return name;
}

public void setName (String name) {
    this.name = name;
}

public String getEmail () {
    return email;
}

public void setEmail (String email) {
    this.email = email;
}}
Run Code Online (Sandbox Code Playgroud)

2-创建一个新的bean类Phone.java: -

public class Phone implements Serializable{
private String home;

public String getMobile () {
    return mobile;
}

public void setMobile (String mobile) {
    this.mobile = mobile;
}

public String getHome () {
    return home;
}

public void setHome (String home) {
    this.home = home;
}

private String mobile;}
Run Code Online (Sandbox Code Playgroud)

3-现在按如下方式更新您的代码: -

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, APITEST,null, new Response.Listener<JSONObject>() {

    @Override
    public void onResponse(JSONObject jsonObject) {

        Gson gson = new Gson();
        People people;
        people = gson.fromJson(jsonObject.toString(),People.class);
        tv_city.setText(""+people.email);
        //for getting Home & Mobile number
          String home=people.getPhone.getHome();
          String mobile=people.getPhone.getMobile();

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



    }
});
Run Code Online (Sandbox Code Playgroud)

注意: - 我的上面的bean是你问题中预期的api响应.但是如果你有嵌套对象,那么你必须选择People bean中的一个List<Phone>或者ArrayList<Phone>内部,然后创建它的getter和setter.

希望对你有帮助 !!!