使用 Vertx JsonArray 和 RxJava Observables
Working with Vertx JsonArray and RxJava Observables
一个顶点JsonObject
包含一个顶点JsonArray
,类似于:
{
"myArray":[
{"id":"1", name:"Yael" },
{"id":"2", name:"Haddasa"}
]
}
使用数组创建 RxJava Observable
的正确方法是什么,以便 observable 将分别处理数组中的每个元素。已尝试以下方法:
JsonArray vertxJsonArray = h.getJsonArray("myArray");
Observable<Object> observable = Observable.fromArray(vertxJsonArray);
observable.flatMapSingle(s -> {
...
但是使用上面的方法,数组并没有被拆分成单独的元素。
谢谢
因为 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());
}
一个顶点JsonObject
包含一个顶点JsonArray
,类似于:
{
"myArray":[
{"id":"1", name:"Yael" },
{"id":"2", name:"Haddasa"}
]
}
使用数组创建 RxJava Observable
的正确方法是什么,以便 observable 将分别处理数组中的每个元素。已尝试以下方法:
JsonArray vertxJsonArray = h.getJsonArray("myArray");
Observable<Object> observable = Observable.fromArray(vertxJsonArray);
observable.flatMapSingle(s -> {
...
但是使用上面的方法,数组并没有被拆分成单独的元素。 谢谢
因为 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());
}