Как перебрать JSONArray с помощью RXJava 2? - PullRequest
0 голосов
/ 19 декабря 2018

для перебора списка массивов можно использовать следующий код

 List<LatLng> latLngs = new ArrayList<>();
                        latLngs.add(new LatLng(5,5));

                        Observable.just(latLngs)
                                .concatMap(array -> Observable.fromIterable(array))
                                .subscribe(v-> Log.d(TAG, "subscribeToTopic: "+v.latitude));

, но как перебрать JSONarray, как это, используя Rxjava?

 [{
    "vehicleId": "5c11e863a361762fdbe99fae",
    "latitude": "19.952829",
    "latitudeDir": "N",
    "longitude": "73.735054",
    "longitudeDir": "E",
    "speed": "0.0",
    "ignition": "0",
    "batteryStatus": "1"
 }, {
    "vehicleId": "5c11e863a361762fdbe99fae",
    "latitude": "19.952829",
    "latitudeDir": "N",
    "longitude": "73.735054",
    "longitudeDir": "E",
    "speed": "0.0",
    "ignition": "0",
    "batteryStatus": "1"
 }, {
    "vehicleId": "5c11e863a361762fdbe99fae",
    "latitude": "19.952829",
    "latitudeDir": "N",
    "longitude": "73.735054",
    "longitudeDir": "E",
    "speed": "0.0",
    "ignition": "0",
    "batteryStatus": "1"
 }, {
    "vehicleId": "5c11e863a361762fdbe99fae",
    "latitude": "19.952829",
    "latitudeDir": "N",
    "longitude": "73.735054",
    "longitudeDir": "E",
    "speed": "0.0",
    "ignition": "0",
    "batteryStatus": "1"
 }]

1 Ответ

0 голосов
/ 19 декабря 2018

Поскольку JSONArray реализует интерфейс List (при условии, что вы используете здесь simplejson), вы можете сделать то же самое:

JSONArray jsonArray = new JSONArray();
Observable.fromIterable(jsonArray)
  .subscribe(e -> {
    System.out.println((JSONObject) e);
  });

EDIT: основываясь на ваших комментариях, я думаю, что вы не используете simplejson, ноэто org.json.JSONArray, который не реализует интерфейс List.В этом случае вы можете выполнить итерацию так:

JSONArray jsonArray = new JSONArray();
Observable.range(0,jsonArray.length())
  .map(jsonArray::get)
  .subscribe(e -> {
     System.out.println((JSONObject) e);
  });
...