访问顶点 JsonObject 中的数组元素
Accessing array elements in a vertx JsonObject
给出以下 io.vertx.core.json.JsonObject
:
{
"111":[
{
"A":"a1",
},
{
"A":"a2",
},
{
"A":"a3",
}
],
"222":[
{
"A":"a10",
},
{
"A":"a20",
},
{
"A":"a30",
}
]
}
由于事先不知道包含数组(111
和 222
)的外部元素的名称,因此访问每个元素的正确方法是什么数组,例如
{"A":"a1"}
一旦数组的元素作为集合可用,该集合如何变成 rxJava Observable
。
已尝试以下方法:
List list = arrayElements.stream().collect(Collectors.toList());
Observable 可观察 = Observable.fromIterable(列表);
但是,问题在于流中的每个元素随后都表示为 java.util.LinkedHashMap.Entry
,例如A=a1
,而需要的是保留原始 Json 表示。
谢谢
您可以使用 JsonObject.fieldNames()
获取对象字段。
JsonArray
是一个 Iterable<Object>
,因为它可能包含不同的类型(对象、字符串等)。如果您确信 JsonArray
仅包含 JsonObject
,则可以转换该值。
这是综合结果:
for (String fieldName : jsonObject.fieldNames()) {
JsonArray jsonArray = jsonObject.getJsonArray(fieldName);
Observable<JsonObject> observable = Observable
.fromIterable(jsonArray)
.map(JsonObject.class::cast);
System.out.println("fieldName = " + fieldName);
observable.subscribe(json -> System.out.println("json = " + json));
}
给出以下 io.vertx.core.json.JsonObject
:
{
"111":[
{
"A":"a1",
},
{
"A":"a2",
},
{
"A":"a3",
}
],
"222":[
{
"A":"a10",
},
{
"A":"a20",
},
{
"A":"a30",
}
]
}
由于事先不知道包含数组(
111
和222
)的外部元素的名称,因此访问每个元素的正确方法是什么数组,例如{"A":"a1"}
一旦数组的元素作为集合可用,该集合如何变成 rxJava
Observable
。 已尝试以下方法:List list = arrayElements.stream().collect(Collectors.toList());
Observable 可观察 = Observable.fromIterable(列表);
但是,问题在于流中的每个元素随后都表示为 java.util.LinkedHashMap.Entry
,例如A=a1
,而需要的是保留原始 Json 表示。
谢谢
您可以使用 JsonObject.fieldNames()
获取对象字段。
JsonArray
是一个 Iterable<Object>
,因为它可能包含不同的类型(对象、字符串等)。如果您确信 JsonArray
仅包含 JsonObject
,则可以转换该值。
这是综合结果:
for (String fieldName : jsonObject.fieldNames()) {
JsonArray jsonArray = jsonObject.getJsonArray(fieldName);
Observable<JsonObject> observable = Observable
.fromIterable(jsonArray)
.map(JsonObject.class::cast);
System.out.println("fieldName = " + fieldName);
observable.subscribe(json -> System.out.println("json = " + json));
}