如何在Kotlin中与Gson一起使用TypeToken +泛型

2019-12-24  本文已影响0人  寥瞭

class RosPublishResponse {

var msg:T? =null

    var id: String? =null

    var topic: String? =null

    var op: String? =null

}

open class BaseSubscribeMsg(var header: Header? =null)

data class RobotStatus(val robot_status: Int? = -1) : BaseSubscribeMsg(){}

创建内联方法

inline fun <reified T> Gson.fromJson(json: String) = this.fromJson<T>(json, object: TypeToken<T>() {}.type

使用

val resp ="{\"topic\": \"/robot_system_status\", \"msg\": {\"header\": {\"stamp\": {\"secs\": 1577094994, \"nsecs\": 417498327}, \"frame_id\": \"\", \"seq\": 14869}, \"robot_status\": 10}, \"op\": \"publish\"}"

val robotStatus= Gson().fromJson<RosPublishResponse<RobotStatus>>(resp)

进过封装后不用每次都去手动new TypeToken

上一篇 下一篇

猜你喜欢

热点阅读