代码“val jsonObj = json as JsonObject”在Kotlin中意味着什么?

时间:2017-08-01 06:15:29

标签: kotlin

以下示例代码来自网页,您能告诉我代码val jsonObj = json as JsonObject的含义吗? Kotlin的关键字是as吗?

谢谢!

open class WeatherDeserializer : JsonDeserializer<WeatherObject> {

    override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): WeatherObject? {
        val jsonObj = json as JsonObject

        val wheather = WeatherObject()
        val wind = WindObject()

        val jsonWeatherArray = jsonObj.getAsJsonArray("weather").get(0)
        val jsonMainObj = jsonObj.getAsJsonObject("main")
        val jsonWindObj = jsonObj.getAsJsonObject("wind")

        wheather.main = jsonWeatherArray.asJsonObject.get("main").asString
        wheather.description = jsonWeatherArray.asJsonObject.get("description").asString
        wheather.temp = jsonMainObj.get("temp").asFloat
        wheather.tempMax = jsonMainObj.get("temp_max").asFloat
        wheather.tempMin = jsonMainObj.get("temp_min").asFloat
        wheather.humidity = jsonMainObj.get("humidity").asInt
        wind.speed = jsonWindObj.get("speed").asFloat
        wind.deg = jsonWindObj.get("deg").asFloat
        wheather.wind = wind

        return wheather

    }
}

2 个答案:

答案 0 :(得分:2)

您的json正在投放到JsonObjectas是Kotlin中的强制转换关键字。

as为我们提供了不安全的演员表。如果演员阵容不可能,那将抛出异常。

Further reading

答案 1 :(得分:1)

as是一个类型转换操作符。

所以这只会将您json JsonElement的{​​{1}}对象投放到JsonObject

就像Java等同于JsonObject jsonObject = (JsonObject) json;

如需更多阅读此https://kotlinlang.org/docs/reference/typecasts.html#unsafe-cast-operator