Я пытаюсь реализовать Retrofit в своем приложении для связи с конечными точками моего сервера. У меня есть таблица в бэкенде под названием «Feature», в которой есть id: number, name: text и roomID: number fields. Я не понимаю, что я делаю неправильно. Я строго следил за документами Retrofit. Я получаю эту ошибку, когда я пытаюсь получить определенную функцию по идентификатору из моей базы данных я получаю эту ошибку:Ожидаемое BEGIN_ARRAY, но было BEGIN_OBJECT Android Json
IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
06-13 17:21:20.896 15174-15180/xdesign.georgi.espc_retrofit W/art: Suspending all threads took: 5.681ms
Это моя основная активность:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
GitHubService gitHubService = GitHubService.retrofit.create(GitHubService.class);
final Call<Feature> call = gitHubService.repoContributors(173);
call.enqueue(new Callback<Feature>() {
@Override
public void onResponse(Call<Feature> call, Response<Feature> response) {
Log.e("MainActivity","onResponce");
final TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(response.body().toString());
}
@Override
public void onFailure(Call<Feature> call, Throwable t) {
Log.e("MainActivity","onFailure" + t.toString());
final TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("Something went wrong: " + t.getMessage());
}
});
}
});
}
GitHutService.java
interface GitHubService {
@GET("Features/{id}")
Call<Feature> repoContributors(@Path("id") int id);
public static final Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://10.0.2.2:3000/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
}
Feature.java
public class Feature {
String name;
int roomID;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getRoomID() {
return roomID;
}
public void setRoomID(int roomID) {
this.roomID = roomID;
}
@Override
public String toString() {
return "Feature{" +
"name='" + name + '\'' +
", roomID=" + roomID +
'}';
}
}
Note : This issue can happen in any networking library which parses the JSON response and gives the final Java POJO back.
Благодарим за предложение! Я посмотрю, не решит ли он проблему :) –
Это сработало! Спасибо! –
Добро пожаловать. Я отредактирую ваш вопрос, так как это происходит с любой библиотекой, которая дает ответ в POJO :) –