Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Retrofit2 response.body使用改装返回null:2.3.0_Retrofit2_Android_Gson - Fatal编程技术网

Retrofit2 response.body使用改装返回null:2.3.0

Retrofit2 response.body使用改装返回null:2.3.0,retrofit2,android,gson,Retrofit2,Android,Gson,我的json数据如下 { "data":[ { "id":"4", "totalOpns":"40000", "killedDrugPer":"320", "arrestedDrugPer":"17683", "houseVisited":"4000", "userSurrenderers":"45000",

我的json数据如下

{
    "data":[
        {
            "id":"4",
            "totalOpns":"40000",
            "killedDrugPer":"320",
            "arrestedDrugPer":"17683",
            "houseVisited":"4000",
            "userSurrenderers":"45000",
            "pusherSurrenderers":"15000",
            "totalSurrenderers":"60000",
            "killedPNPPerOpns":"40",
            "woundedPNPPerOpns":"70",
            "killedAFPPerOpns":"100",
            "woundedAFPPerOpns":"10",
            "date":"2017-07-12 13:57:34.000"
        }
    ]
}
我的数据模型是这样的

package com.androidtutorialpoint.retrofitandroid;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;

public class Student implements Serializable {

    //Variables that are in our json

    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("totalOpns")
    @Expose
    private String totalOpns;
    @SerializedName("killedDrugPer")
    @Expose
    private String killedDrugPer;
    @SerializedName("arrestedDrugPer")
    @Expose
    private String arrestedDrugPer;
    @SerializedName("houseVisited")
    @Expose
    private String houseVisited;
    @SerializedName("userSurrenderers")
    @Expose
    private String userSurrenderers;
    @SerializedName("pusherSurrenderers")
    @Expose
    private String pusherSurrenderers;
    @SerializedName("totalSurrenderers")
    @Expose
    private String totalSurrenderers;
    @SerializedName("killedPNPPerOpns")
    @Expose
    private String killedPNPPerOpns;
    @SerializedName("woundedPNPPerOpns")
    @Expose
    private String woundedPNPPerOpns;
    @SerializedName("killedAFPPerOpns")
    @Expose
    private String killedAFPPerOpns;
    @SerializedName("woundedAFPPerOpns")
    @Expose
    private String woundedAFPPerOpns;
    @SerializedName("date")
    @Expose
    private String date;

    public String getId() {
        return id;
    }

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

    public String getTotalOpns() {
        return totalOpns;
    }

    public void setTotalOpns(String totalOpns) {
        this.totalOpns = totalOpns;
    }

    public String getKilledDrugPer() {
        return killedDrugPer;
    }

    public void setKilledDrugPer(String killedDrugPer) {
        this.killedDrugPer = killedDrugPer;
    }

    public String getArrestedDrugPer() {
        return arrestedDrugPer;
    }

    public void setArrestedDrugPer(String arrestedDrugPer) {
        this.arrestedDrugPer = arrestedDrugPer;
    }

    public String getHouseVisited() {
        return houseVisited;
    }

    public void setHouseVisited(String houseVisited) {
        this.houseVisited = houseVisited;
    }

    public String getUserSurrenderers() {
        return userSurrenderers;
    }

    public void setUserSurrenderers(String userSurrenderers) {
        this.userSurrenderers = userSurrenderers;
    }

    public String getPusherSurrenderers() {
        return pusherSurrenderers;
    }

    public void setPusherSurrenderers(String pusherSurrenderers) {
        this.pusherSurrenderers = pusherSurrenderers;
    }

    public String getTotalSurrenderers() {
        return totalSurrenderers;
    }

    public void setTotalSurrenderers(String totalSurrenderers) {
        this.totalSurrenderers = totalSurrenderers;
    }

    public String getKilledPNPPerOpns() {
        return killedPNPPerOpns;
    }

    public void setKilledPNPPerOpns(String killedPNPPerOpns) {
        this.killedPNPPerOpns = killedPNPPerOpns;
    }

    public String getWoundedPNPPerOpns() {
        return woundedPNPPerOpns;
    }

    public void setWoundedPNPPerOpns(String woundedPNPPerOpns) {
        this.woundedPNPPerOpns = woundedPNPPerOpns;
    }

    public String getKilledAFPPerOpns() {
        return killedAFPPerOpns;
    }

    public void setKilledAFPPerOpns(String killedAFPPerOpns) {
        this.killedAFPPerOpns = killedAFPPerOpns;
    }

    public String getWoundedAFPPerOpns() {
        return woundedAFPPerOpns;
    }

    public void setWoundedAFPPerOpns(String woundedAFPPerOpns) {
        this.woundedAFPPerOpns = woundedAFPPerOpns;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}
接口是这样的

package com.androidtutorialpoint.retrofitandroid;

import retrofit2.Call;
import retrofit2.http.GET;

public interface RetrofitObjectAPI {

/*
 * Retrofit get annotation with our URL
 * And our method that will return us details of student.
*/
// @GET("JSONTESTING/index.php")
@GET("getJson")
Call<Student> getStudentDetails();
}
package com.androidtutorialpoint.android;
2.电话;;
导入文件2.http.GET;
公共接口对象API{
/*
*用我们的URL改装get注释
*我们的方法将返回学生的详细信息。
*/
//@GET(“JSONTESTING/index.php”)
@获取(“getJson”)
调用getStudentDetails();
}
主要是这个

private void getRetrofitObject() {
    HttpLoggingInterceptor.Level logLevel = HttpLoggingInterceptor.Level.BODY;

    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    // set your desired log level
    logging.setLevel(logLevel);

    OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
    // add your other interceptors …

    // add logging as last interceptor
    httpClient.addInterceptor(logging);  // <-- this is the important line!

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(url)
        .addConverterFactory(GsonConverterFactory.create())
        .client(httpClient.build())
        .build();

    RetrofitObjectAPI service = retrofit.create(RetrofitObjectAPI.class);

    Call<Student> call = service.getStudentDetails();

    call.enqueue(new Callback<Student>() {
    @Override
        public void onResponse(Call<Student> call, Response<Student> response) {
            try {
                if (response.isSuccessful()) {
                    text_id_1.setText("StudentId  :  " + response.body().getId());
                    text_name_1.setText("StudentName  :  " + response.body().getTotalOpns());
                    text_marks_1.setText("StudentMarks  : " + response.body().getArrestedDrugPer());
                } else {
                    //unsuccessful response
                }
            } catch (Exception e) {
                Log.d("onResponse", "There is an error");
                e.printStackTrace();
            }
        }

        @Override
        public void onFailure(Call<Student> call, Throwable t) {
            Log.d("onFailure", t.toString());
        }
    });
}
private void对象(){
HttpLoggingInterceptor.Level logLevel=HttpLoggingInterceptor.Level.BODY;
HttpLoggingInterceptor logging=新的HttpLoggingInterceptor();
//设置所需的日志级别
logging.setLevel(logLevel);
OkHttpClient.Builder httpClient=新建OkHttpClient.Builder();
//添加其他拦截器…
//添加日志作为最后一个拦截器

httpClient.addInterceptor(日志);//您将收到响应,但反序列化中存在问题。 调用
的原因不是它将被序列化的类型,因为您将获得一个学生列表(JSONArray)

添加这个类

MyResponse

public class MyResponse {

@SerializedName("data")
@Expose
private List<Student> data = null;

public List<Student> getData() {
return data;
}

public void setData(List<Student> data) {
this.data = data;
}

}
公共类MyResponse{
@SerializedName(“数据”)
@暴露
私有列表数据=null;
公共列表getData(){
返回数据;
}
公共无效设置数据(列表数据){
这个数据=数据;
}
}
并将您的通话改为:

@GET("getJson")
Call<MyResponse> getStudentDetails();
@GET(“getJson”)
调用getStudentDetails();
现在您将获得响应体 如何重新审判

List<Student> students = response.body().getData();
List students=response.body().getData();

这就可以了。:)

非常感谢您,先生,它成功了。我知道我的json是一个数组。