Kotlin(Mutable)List <(raw)kotlin.Any?>强制转换为List <JsonObject>

在我的代码中我得到一个io.vertx.core.json.JsonArray,我想有一个JsonObjects列表。 所以在Java中,我调用jsonarray.getList()并获取List – getList()返回一个java.util.List。

所以在Kotlin

var list: List<JsonObject> = jsonArray.getList() 

但我得到一个错误

 Type mismatch: inferred type is kotlin.collections.(Mutable)List<(raw) kotlin.Any?>! but kotlin.collections.List<io.vertx.core.json.JsonObject> was expected 

我能施展吗?

谢谢

JsonArray可以同时拥有原始对象和复杂对象:

 val jsonArray = JsonArray("""[1, {"foo": "bar"}, "stack"]""") println(jsonArray.toList()) // -> [1, {foo=bar}, stack] println(jsonArray.toList().map { it?.javaClass?.simpleName }) // -> [Integer, JsonObject, String] 

JsonObject反过来代表一个非原始对象。 换句话说,不适合代表"stack"5.4false 。 如果你确定jsonArray只包含JsonObject实例,你可以这样做:

 val jsonArray = JsonArray("""[{"foo": "bar"}]""") println(jsonArray.toList() .map { it as JsonObject } .map { it.getString("foo")})