Вы должны были использовать класс JsonObject
из библиотеки Gson в вашем интерфейсе API. (Вам не нужно включать библиотеку Gson отдельно, так как вы используете Retrofit) Как показано ниже
Call<JsonObject> SUBMIT_OFFLINE_RECORD(@Body JsonObject offlineRequest);
Если вышеприведенное решение не работает, создайте классы POJO и передайте его в качестве параметра аннотации @Body
.
User.java
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class User {
@SerializedName("id")
@Expose
private String id;
@SerializedName("pName")
@Expose
private String pName;
@SerializedName("pAge")
@Expose
private String pAge;
@SerializedName("pGender")
@Expose
private String pGender;
@SerializedName("pPhone")
@Expose
private String pPhone;
@SerializedName("pNIC")
@Expose
private String pNIC;
@SerializedName("pDiagnosis")
@Expose
private String pDiagnosis;
@SerializedName("dName")
@Expose
private String dName;
@SerializedName("dSpeciality")
@Expose
private String dSpeciality;
@SerializedName("dPhone")
@Expose
private String dPhone;
@SerializedName("dInstitution")
@Expose
private String dInstitution;
@SerializedName("dAssistantName")
@Expose
private String dAssistantName;
@SerializedName("dCity")
@Expose
private String dCity;
public User(String id, String pName, String pAge, String pGender, String pPhone, String pNIC, String pDiagnosis, String dName, String dSpeciality, String dPhone, String dInstitution, String dAssistantName, String dCity) {
this.id = id;
this.pName = pName;
this.pAge = pAge;
this.pGender = pGender;
this.pPhone = pPhone;
this.pNIC = pNIC;
this.pDiagnosis = pDiagnosis;
this.dName = dName;
this.dSpeciality = dSpeciality;
this.dPhone = dPhone;
this.dInstitution = dInstitution;
this.dAssistantName = dAssistantName;
this.dCity = dCity;
}
// other constructors, getter and setter methods
}
Data.java
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Example {
@SerializedName("data")
@Expose
private List<Datum> data = null;
public Example(List<Datum> data) {
this.data = data;
}
}
И изменить @Body
параметр аннотации с JSONObject
на Data
, как показано ниже
Call<JsonObject> SUBMIT_OFFLINE_RECORD(@Body Data offlineRequest);
Использование классов POJO
User user = new User(/* pass all required parameters to constructor */);
Data data = new Data(user); // pass User object to constructor
// pass Data object to API request method
Api api= RetrofitClientInstance.getRetrofitInstance().create(Api.class);
Call<JsonObject> call = api.SUBMIT_OFFLINE_RECORD(data);
// implement call listeners
Обратите внимание, что я изменил параметры с JSONObject
на JsonObject
, а также в параметре Call<>
.