Я хочу написать функцию, которая десериализует определенный JSON String
в объект определенного типа, используя Gson, и возвращает этот объект. Этот тип может быть стандартным Kotlin типом (таким как Boolean
, String
, et c), одним из типов моего приложения (скажем, User
) или универсальным c типом (таким как HashMap<Int, Boolean>
).
Очень упрощенная версия этой функции будет выглядеть следующим образом:
fun <T> get(jsonString: String, typeOfObj: /*type goes here. T???, typeOf???, etc*/): T? {
return gson?.fromJson(jsonString, typeOfObj)
}
Я бы хотел назвать ее, передав ей строку , и типа Я ожидаю, что вернусь от десериализации этого, следующим образом:
val result: HashMap<Int, Boolean> = get(myString, Map<Int, Boolean>)
Я пытался использовать inline
и reified
, KType
и др. c, но я все еще застрял, потому что у меня нет опыта работы с Kotlin системой типов и API отражения.
Какой тип параметра позволит мне написать и вызвать эту функцию следующим образом способ