如何解析 RxJava 以仅接收我想要的数据?
How to parse RxJava to receive just the data that i want?
我只想要数字,但这是我在日志中收到的:
[Boletim(grade=4.5), Boletim(grade=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());
}
});
}
}
机型:
等级模型:
@SerializedName("boletim")
@Expose
private Boletim[] boletim;
Boletim.class
public class Boletim {
@SerializedName("grade")
@Expose
private double grade;
改装服务正常,依赖注入正常。我从 rxJava 接收到 onSuccess 方法,我现在只需要接收没有这个的数字 "[Boletim(grade=".
您看到了对象的 toString,因为您在地图中得到了整个对象!
only the numbers without this "[Boletim(grade=".
你不能再映射并提取它吗?
.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
如果你不想要数组的 Observable,那么使用 flatMap
我只想要数字,但这是我在日志中收到的:
[Boletim(grade=4.5), Boletim(grade=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());
}
});
}
}
机型:
等级模型:
@SerializedName("boletim")
@Expose
private Boletim[] boletim;
Boletim.class
public class Boletim {
@SerializedName("grade")
@Expose
private double grade;
改装服务正常,依赖注入正常。我从 rxJava 接收到 onSuccess 方法,我现在只需要接收没有这个的数字 "[Boletim(grade=".
您看到了对象的 toString,因为您在地图中得到了整个对象!
only the numbers without this "[Boletim(grade=".
你不能再映射并提取它吗?
.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
如果你不想要数组的 Observable,那么使用 flatMap