使用Vertx JsonArray和RxJava Observables

时间:2019-06-05 14:45:30

标签: rx-java2 vert.x vertx-verticle

一个顶点JsonObject包含一个顶点JsonArray,类似于:

{
 "myArray":[
   {"id":"1", name:"Yael" },
   {"id":"2", name:"Haddasa"}
 ]
}

使用数组创建RxJava Observable的正确方法是什么,以便可观察对象将分别处理数组中的每个元素。尝试了以下方法:

JsonArray vertxJsonArray = h.getJsonArray("myArray");
Observable<Object> observable = Observable.fromArray(vertxJsonArray);
observable.flatMapSingle(s -> {
   ...

但是使用上面的方法,数组没有被拆分成单独的元素。 谢谢

1 个答案:

答案 0 :(得分:1)

由于JsonArray实现了Iterable,因此您可以使用Observable.fromIterable(),如下所示:

@Test
public void from_iterable_test() {
    final TestObserver<Object> testObserver = new TestObserver<>();

    final String json = "{\"myArray\": [{\"id\": \"1\", \"name\": \"Yael\"}, {\"id\": \"2\", \"name\": \"Haddasa\"}] }";

    final JsonObject jsonObject = new JsonObject(json);

    final JsonArray jsonArray = jsonObject.getJsonArray("myArray");

    Observable.fromIterable(jsonArray).subscribe(testObserver);

    assertEquals(jsonArray.size(), testObserver.valueCount());
}