Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析RxJava以接收我想要的数据?_Java_Android_Rx Java_Rx Android - Fatal编程技术网

如何解析RxJava以接收我想要的数据?

如何解析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

我只想要数字,但这是我在日志中收到的:

[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());
                    }
                });
    }
}
博莱蒂姆级


改装服务正常,依赖注入正在工作。我正在从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));
    }
}