2016-06-08 102 views
1

在我的代码中我得到一个io.vertx.core.json.JsonArray,我想要一个JsonObjects列表。 所以在Java中,我调用jsonarray.getList()并获取List - getList()返回一个java.util.List。Kotlin(Mutable)List <(raw)kotlin.Any?>投入列表<JsonObject>

所以在科特林

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

回答

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")}) 
相关问题