这种情况是在JS版本(Properties.decodeFromMap (map))中出现的,但对于安卓系统,我还没有见过。
它也可以使用Jackson来解决
对象中,我应该得到一个相当复杂的类型,字段的近似形式要大得多
data class BaseModel (val value: String,val options: Options,val type: Type ...)
我需要在BaseModel中直接从Map <String, Any>
获取的主要内容
发布于 2021-09-13 14:42:00
我认为最好使用kotlinx-serialization-properties包中的属性,事实证明它也是android的发行版
发布于 2021-09-12 11:44:30
这是一个相当深入的kotlin的旅程,但我得到了一个最小的例子。
data class BaseModel(var a:Int, var b:String)
...
//during onCreate
val map=mutableMapOf<String,Any>()
map.put("a",1)
map.put("b","b")
test(map)
...
fun test(map:MutableMap<String,Any>){
val params=BaseModel::class.constructors.toList()[0].parameters.associateBy({ it }, { map.get(it.name) })
val bm=BaseModel::class.constructors.toList()[0].callBy(params)
println(bm.a)
println(bm.b)
}
它会像预期的那样打印1和b。
不过需要注意的是,您必须在类路径中包含kotlin-flect.jar,如果您使用的是Android Studio,则可以通过单击警报来添加它。但是,如果您不添加该依赖项,您的IDE中将不会出现编译时错误或任何警告;错误直到运行时才会被捕获。
https://stackoverflow.com/questions/69142485
复制相似问题