android – RxJava,Retrofit错误:预期BEGIN_ARRAY但在第1行第2列路径$BEGIN_OBJECT $
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – RxJava,Retrofit错误:预期BEGIN_ARRAY但在第1行第2列路径$BEGIN_OBJECT $,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3717字,纯文字阅读大概需要6分钟。
内容图文
![android – RxJava,Retrofit错误:预期BEGIN_ARRAY但在第1行第2列路径$BEGIN_OBJECT $](/upload/InfoBanner/zyjiaocheng/820/00c16b4dd86a4cb4978bb1e05f7601cd.jpg)
我正在使用Retrofit和RxJava库并尝试解析此URL:
我的代码如下.
APIInterface.java
public interface APIService {
@GET("/bins/tdze5")
Observable<List<Student>> getdata();
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<Student> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
getData();
}
private void getData() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.myjson.com")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
APIService apiService = retrofit.create(APIService.class);
Observable<List<Student>> observable = apiService.getdata().subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
observable.subscribe(new Observer<List<Student>>() {
@Override
public void onCompleted() {
}
@Override
public void one rror(Throwable e) {
Log.d("error",e.toString());
}
@Override
public void onNext(List<Student> students) {
list = new ArrayList<>();
Log.d("response size", String.valueOf(students.size()));
for(int i = 0; i < students.size(); i++){
Student student = new Student();
student.setId(students.get(i).getId());
student.setName(students.get(i).getName());
list.add(student);
}
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(list);
RecyclerView.LayoutManager recyce = new LinearLayoutManager(MainActivity.this);
recyclerView.setLayoutManager(recyce);
recyclerView.setItemAnimator( new DefaultItemAnimator());
recyclerView.setAdapter(recyclerAdapter);
}
});
}
}
我的模型类如下
Student.java
public class Student {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }
我正进入(状态
D/error: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was
BEGIN_OBJECT at line 1 column 2 path $in Log
我到处都搜索过这个错误,但我找不到任何关于RxJava和Retrofit的信息.
解决方法:
再添加一个类,并使用如下所示.
public class ResponseClass {
@SerializedName("students")
@Expose
private List<Student> students = null;
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
}
APIInterface.java
public interface APIService {
@GET("/bins/tdze5")
Observable<ResponseClass> getdata();
}
MainActivity.java
private void getData() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.myjson.com")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
APIService apiService = retrofit.create(APIService.class);
Observable<ResponseClass> observable = apiService.getdata().subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
observable.subscribe(new Observer<ResponseClass>() {
@Override
public void onCompleted() {
}
@Override
public void one rror(Throwable e) {
Log.d("error",e.toString());
}
@Override
public void onNext(ResponseClass response) {
list = new ArrayList<>();
List<Student> students = response.getStudents();
Log.d("response size", String.valueOf(students.size()));
for(int i = 0; i < students.size(); i++){
Student student = new Student();
student.setId(students.get(i).getId());
student.setName(students.get(i).getName());
list.add(student);
}
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(list);
RecyclerView.LayoutManager recyce = new LinearLayoutManager(MainActivity.this);
recyclerView.setLayoutManager(recyce);
recyclerView.setItemAnimator( new DefaultItemAnimator());
recyclerView.setAdapter(recyclerAdapter);
}
});
}
内容总结
以上是互联网集市为您收集整理的android – RxJava,Retrofit错误:预期BEGIN_ARRAY但在第1行第2列路径$BEGIN_OBJECT $全部内容,希望文章能够帮你解决android – RxJava,Retrofit错误:预期BEGIN_ARRAY但在第1行第2列路径$BEGIN_OBJECT $所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。