使用Retrofit和RxJava从Android的JSON数组中一对一获取JSON对象 [英] Get JSON object one by one from JSON array in Android using Retrofit and RxJava

查看:247
本文介绍了使用Retrofit和RxJava从Android的JSON数组中一对一获取JSON对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用改型打我的网络api,该API返回json数组.我这样做是使用以下代码-

I am using retrofit to hit my network api which returns json array. I am doing so using following code-

Observable<MyJson[]> response = (Observable<MyJson[]>)mNetworkService.getReadyObserverable(mNetworkService.getNetworkServiceApi().getMyDataJsons(), MyJson.class, true, useCache);
        mAirlineSubscription = response.subscribe(new Observer<MyJson[]>() {
            @Override
            public void onCompleted() {
                Log.d(TAG, "getData completed..");
            }

            @Override
            public void onError(Throwable e) {
                Log.e(TAG, "onError: "  + e.getLocalizedMessage());
            }

            @Override
            public void onNext(MyJson[] myJsonData) {
                //I want here json data one by one
            }

但是我的问题是要完全下载json数据数组,然后才下载 onNext被调用.在这里我希望onNext应该在改造从myData[] json数组下载第一个json对象时调用,并保持继续,直到我下载所有myData[]的json对象.这样一来,我的用户界面在用户交互方面将显得响应更快,更好.

But my problem is json data array get downloaded completely and then only onNext gets called. Here I want onNext should get called when retrofit downloads first json object from myData[] json array and keep continue until my all json objects of myData[] get downloaded. This way my UI would look more responsive and better in terms of user interaction.

任何人都可以帮助解决此问题吗?

Can anyone help to fix this?

推荐答案

我也有相同的问题,请向我解释一下自己项目的基础,您应该使用 我的改装要求是

i have same question i explain it base of own project, you should use my retrofit request is

@GET("StudentApi/getAll")
    Observable<List<Person>> getPersons();

并且我有一个接口来运行服务器请求,并且它具有用于运行getPersons()并返回人员信息的json数组列表的方法

and i have an interface to run server request and it has this method for run getPersons() and return list of json array of persons info

Observable<Person> getAllPersons();

,重要的部分是up方法的主体,应该像下面这样

@Override
    public Observable<Person> getAllPersons() {
        Observable<List<Person>> observable =
                serviceGenerator.getService().getPersons();
        return observable
                .flatMap(new Function<List<Person>, Observable<Person>>() {
                    @Override
                    public Observable<Person> apply(List<Person> persons) throws Exception {
                        return Observable.fromIterable(persons);
                    }
                });
}

我发现fromIterable方法一个接一个地返回json数组的对象 最后在一次活动中,我从诸如下面的方法中获取json对象

i found that fromIterable method return objects of json array one by one and finally in an activity i get json objects from up methods like bellow

public void getPersons(){
      personsRepository.getAllPersons()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribeWith(new DisposableObserver<Person>() {
                    @Override
                    public void onNext(Person value) {
                        Log.e("person info  is",value.getpName() + value.getpFamily());
                    }

                    @Override
                    public void onError(Throwable throwable) {
                        Log.e("onError",throwable.toString());
                    }

                    @Override
                    public void onComplete() {
                        Log.e("onComplete","onComplete");
                    }
                });
    }

我希望是有用的:)

这篇关于使用Retrofit和RxJava从Android的JSON数组中一对一获取JSON对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆