Kotlin(Mutable)List&lt;(raw)kotlin.Any?&gt;强制转换为List <jsonobject>

时间:2016-06-08 16:26:02

标签: java list kotlin mutable

在我的代码中我得到一个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

1 个答案:

答案 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.4false。如果您确定jsonArray仅包含JsonObject个实例,则可以执行以下操作:

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