如何解析RxJava以接收我想要的数据?
我只想数字,但是这是我在日志接收什么:如何解析RxJava以接收我想要的数据?
[Boletim(等级= 4.5),Boletim(等级= 9.5)]
的回应:
public class GradeResponse {
@Inject
Retrofit retrofit;
@Inject
MainPresenter mainPresenter;
public void getGradeRx() {
MyApplication.getMainComponent().injectIntoGradeResponse(this);// informando ao dagger sobre o uso de um component e a necessidade de injetar dependência
Subscription getGrade = retrofit
.create(GradeService.class)
.getGrade()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(model -> {
return model.getBoletim();
})
.subscribe(new Observer<Boletim[]>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "saporra vai me matar ainda");
}
@Override
public void onNext(Boletim[] grades) {
Log.i(TAG, Arrays.asList(grades).toString());
}
});
}
}
的车型:
个GradeModel:
@SerializedName("boletim")
@Expose
private Boletim[] boletim;
Boletim.class
public class Boletim {
@SerializedName("grade")
@Expose
private double grade;
改装服务是好的,依赖注入工作。我收到来自rxJava的方法的onSuccess,我只需要现在没有这个“[Boletim(级=”。
你看到你的对象的toString因为你得到整个对象只接收数字你地图!
只有数字没有这个 “[Boletim(级=”。
路不能再次映射并提取呢?
.map(model -> { // This map returns a Boletim[]
return model.getBoletim();
})
.map(boletim -> { // This map returns a double[]
Double grades = new Double[boletim.length];
for (int i =0; i < grades.length ; i++) {
grades[i] = boletim[i].getGrade() ;
}
return grades;
}).subscribe(new Observer<Double[]>() { // This subscribes to a double[]
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "saporra vai me matar ainda");
}
@Override
public void onNext(Double[] grades) {
Log.i(TAG, Arrays.toString(grades));
}
}
或者你可以把for循环进入onNext
如果你不希望可观察到的阵列,然后用flatMap
没有工作。因为在说“不能解决方法订阅”。 –
即使放在onNext中也不工作,因为需要一个Boletim类型,而且这个循环是双重类型的。 –
我的逻辑中的某些东西是错误的。 –
看到这里的flter运营商 - https://github.com/ReactiveX/ RxJava/wiki/Filtering-Observables – StuStirling
然后你不应该使用'Arrays.asList(grades).toString()'。 –
@LyubomyrShaydariv那我该用什么? –