我无法正确获得json响应。我尝试everyThing但总是告诉我这个错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 3 path $[0]
我认为我的模型类与json响应不兼容。但我不知道如何解决它?
这是我的PHP代码:
<?php
require "dbConnect.php";
$query = "select dateDelivered,dateRequest,documentName from transaction";
$result = mysqli_query($con,$query);
$number_of_rows = mysqli_num_rows($result);
$response = array();
if($number_of_rows > 0) {
while($row = mysqli_fetch_assoc($result)){
array_push($response,$row);
}
}
echo json_encode(array($response));
mysqli_close($con);
?>
这是我的模型类:
public class model {
private String dateDelivered;
private String dateRequest;
private String documentName;
public model(String dtDelivered, String dtRequest,String docName){
this.dateDelivered = dtDelivered;
this.dateRequest = dtRequest;
this.documentName = docName;;
}
public String getDateRequest() {
return dateRequest;
}
public String getDateDelivered() {
return dateDelivered;
}
public String getDocName() {
return documentName;
}
}
这是我的apiInterface:
public interface ApiInterface {
@GET("transaction.php")
Call<List<model>> perTransaction();
}
这个代码适用于apiClient类:
public class ApiClient {
public static final String BASE_URL = "http://10.0.2.2/webService/";
public static Retrofit retrofit = null;
public static Retrofit getApiClient(){
if(retrofit==null){
retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();
}
return retrofit;
}
}
在这个我称之为retrofit2响应的类中:
public class Transaction extends AppCompatActivity {
public static ApiInterface apiInterface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.transaction);
Log.e("we are in on create","Transaction");
apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
Call<List<model>> call = apiInterface.perTransaction();
call.enqueue(new Callback<List<model>>() {
@Override
public void onResponse(Call<List<model>> call, Response<List<model>> response) {
List<model> dataFromServer = response.body();
for(int i = 0;i<dataFromServer.size();i++){
String reDate = dataFromServer.get(i).getDateRequest();
String deDate = dataFromServer.get(i).getDateDelivered();
String docName = dataFromServer.get(i).getDocName();
Log.e("date request :",reDate);
Log.e("date delivered :",deDate);
Log.e("document name:",docName);
}
}
@Override
public void onFailure(Call<List<forListViewData>> call, Throwable t) {
Log.e("we are in on Failure",t.toString());
}
});
}
}
发布于 2018-07-30 16:44:49
制造gson
使用@SerializedName
,试试这个模型类
public class model {
@SerializedName("dateDelivered")
@Expose
private String dateDelivered;
@SerializedName("dateRequest")
@Expose
private String dateRequest;
@SerializedName("documentName")
@Expose
private String documentName;
public String getDateDelivered() {
return dateDelivered;
}
public void setDateDelivered(String dateDelivered) {
this.dateDelivered = dateDelivered;
}
public String getDateRequest() {
return dateRequest;
}
public void setDateRequest(String dateRequest) {
this.dateRequest = dateRequest;
}
public String getDocumentName() {
return documentName;
}
public void setDocumentName(String documentName) {
this.documentName = documentName;
}
}
https://stackoverflow.com/questions/-100001743
复制相似问题