在我的代码中我得到一个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
我可以演员吗?
THX
答案 0 :(得分:4)
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.4
,false
。如果您确定jsonArray
仅包含JsonObject
个实例,则可以执行以下操作:
val jsonArray = JsonArray("""[{"foo": "bar"}]""")
println(jsonArray.toList()
.map { it as JsonObject }
.map { it.getString("foo")})