2016-06-08 7 views
1

내 코드에는 io.vertx.core.json.JsonArray가 있고 JsonObjects 목록이 필요합니다. Java에서 jsonarray.getList()를 호출하고 getList - getList()는 java.util.List를 반환합니다. Kotlin (변경 가능) 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 

내가 캐스트 또는 그렇게 할거야?

들으

답변

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을 나타내는 것은 적합하지 않습니다. jsonArrayJsonObject 인스턴스 만 있으면 다음과 같이 할 수 있습니다.

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