我想从 KClass 的实例和 Map<String, String> 构造一个对象,在其中我将字段名映射到值。
一个例子是:
val testVal = mapOf("title" to "Foo", "description" to "bar")
data class Article(val title: String, val description)
fun <T> deserialize(clazz: KClass<T>, Map<String,String>) : T? = //magic
val article = deserialize(Article::class, testVal)
// here article should be Article{title: "Foo", description: "Bar"}
我的问题是如何使用 Kotlin 反射来做到这一点?如何从可用数据构建对象?我认为只要你指出我正确的方向或给出一个想法就足够了。我的意思是肯定有一种方法,因为我认为这就是 json 序列化程序所做的(我只想要一个更简单的版本,功能更少,在不同的数据格式上)。
如果我可以使用只能存储原始数据类型(int、string、boolean)的数据类来完成这项工作,我会很高兴。
我知道我可以使用像 Jackson 这样的东西,然后构建一个 JsonNode 并反序列化它,但这不是我想要的。我想用反射构建我自己的版本。