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

如何解析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(级=”

+0

看到这里的flter运营商 - https://github.com/ReactiveX/ RxJava/wiki/Filtering-Observables – StuStirling

+0

然后你不应该使用'Arrays.asList(grades).toString()'。 –

+0

@LyubomyrShaydariv那我该用什么? –

你看到你的对象的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

+0

没有工作。因为在说“不能解决方法订阅”。 –

+0

即使放在onNext中也不工作,因为需要一个Boletim类型,而且这个循环是双重类型的。 –

+0

我的逻辑中的某些东西是错误的。 –