Java Type Generic as Argument for GSON

前端 未结 13 1788
陌清茗
陌清茗 2020-11-27 12:51

In GSON to get a list of objects you do

Gson gson = new Gson();
Type token = new TypeToken>(){}.getType();
return gson.fromJson(json         


        
13条回答
  •  死守一世寂寞
    2020-11-27 13:35

    Kotlin "ListOfSomething" solution that worked for me:

    fun  getGsonList(json: String, kclass: KClass) : List {
    
        return getGsonInstance().fromJson>(json, ListOfSomething(kclass.java))
    }
    
    
    internal class ListOfSomething(wrapped: Class) : ParameterizedType {
    
        private val wrapped: Class<*>
    
        init {
            this.wrapped = wrapped
        }
    
        override fun getActualTypeArguments(): Array {
            return arrayOf(wrapped)
        }
    
        override fun getRawType(): Type {
            return ArrayList::class.java
        }
    
        override fun getOwnerType(): Type? {
            return null
        }
    }
    

提交回复
热议问题