如何解析RxJava以接收我想要的数据?
我只想要数字,但这是我在日志中收到的: [Boletim(等级=4.5)、Boletim(等级=9.5)] 响应:如何解析RxJava以接收我想要的数据?,java,android,rx-java,rx-android,Java,Android,Rx Java,Rx Android,我只想要数字,但这是我在日志中收到的: [Boletim(等级=4.5)、Boletim(等级=9.5)] 响应: public class GradeResponse { @Inject Retrofit retrofit; @Inject MainPresenter mainPresenter; public void getGradeRx() { MyApplication.getMainComponent().injectI
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());
}
});
}
}
博莱蒂姆级
改装服务正常,依赖注入正在工作。我正在从rxJava接收onSuccess方法,现在只需要接收没有这个“[Boletim(grade=“”的数字,因为您在地图中看到了整个对象,所以您看到了对象的toString 只有没有此“[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));
}
}
.map(model->{//此映射返回一个Boletim[]
return model.getBoletim();
})
.map(boletim->{//此映射返回双精度[]
双级=新的双级[boletim.长度];
对于(int i=0;i
或者您可以将for循环放入onNext
如果您不想观察数组,请使用flatMap请参见此处的flter运算符-您不应该使用
arrays.asList(grades).toString()
那么。@LyubomyrShaydariv那么我应该用什么呢?@StuStirling你能用它来演示一下吗?@StuStirling你为什么认为这是一个过滤器?这是一个转换没有用。因为他说“无法解决方法订阅”。即使放在onNext中也不起作用,因为is需要一个Boletim类型,而该循环用于双类型。1)subscribe是一个方法,我没有完成它,因为你的问题中已经有了它2)“因为is需要一个Boletim类型”--不,这不是真的。我已将您的Boletim
对象映射到一个双数组中。您需要将代码从new Observer
更改为new Observer
,因为我已经这样做了,并再次给我一个错误。我不接受类型否,它是new Observer,但在映射中是double[]分数=新的双精度[boletim.length];我修正了你的答案并给了你分数。谢谢你的帮助,现在是这样工作的[4.5,9.5]。
public class Boletim {
@SerializedName("grade")
@Expose
private double 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));
}
}