1
我試圖用改造2解析JSON數組:Android的改造解析JSON預計BEGIN_OBJECT但BEGIN_ARRAY
[{"question":"question 1"},{"question":"question 2"}]
這裏是我的項目的主要活動:
package maxime.mysqltest;
import android.graphics.Movie;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private final static int idForm = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Questionable questionService =
ApiClient.getClient().create(Questionable.class);
Call<QuestionList> call = questionService.getQuestions(idForm);
call.enqueue(new Callback<QuestionList>() {
@Override
public void onResponse(Call<QuestionList>call, Response<QuestionList> response) {
List<Question> questions = response.body().getQuestions();
Log.d(TAG, "Number of questions received: " + questions.size());
}
@Override
public void onFailure(Call<QuestionList>call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
}
}
我創建了一個類來訪問MAMP服務器上的我的頁面:
public class ApiClient {
public static final String BASE_URL = "http://*myIP*:8888";
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
我也有兩個類的對象,我嘗試解析:
public class Question {
private final String question;
public Question(String question)
{
this.question=question;
}
}
public class QuestionList {
private List<Question> questions = new ArrayList<>();
public QuestionList(List<Question> questions)
{
this.questions=questions;
}
public List<Question> getQuestions() {
return questions;
}
}
,最後我的界面:
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface Questionable {
@GET("/takeQuestions.php")
Call<QuestionList> getQuestions(@Query("idForm") int idForm);
}
當我運行應用程序下面的錯誤出現:
E/MainActivity: com.google.gson.JsonSyntaxException:
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was
BEGIN_ARRAY at line 1 column 2 path $
我在互聯網上搜索,但我找不到解決我的問題...
非常感謝,它完美的作品 –