首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在kotlin序列化中,是否可以不使用中间选项来立即将Map <String,Any>转换为模型

在kotlin序列化中,是否可以不使用中间选项来立即将Map <String,Any>转换为模型
EN

Stack Overflow用户
提问于 2021-09-11 11:20:11
回答 2查看 85关注 0票数 1

这种情况是在JS版本(Properties.decodeFromMap (map))中出现的,但对于安卓系统,我还没有见过。

它也可以使用Jackson来解决

对象中,我应该得到一个相当复杂的类型,字段的近似形式要大得多

代码语言:javascript
运行
复制
data class BaseModel (val value: String,val options: Options,val type: Type ...)

我需要在BaseModel中直接从Map <String, Any>获取的主要内容

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-13 14:42:00

我认为最好使用kotlinx-serialization-properties包中的属性,事实证明它也是android的发行版

票数 0
EN

Stack Overflow用户

发布于 2021-09-12 11:44:30

这是一个相当深入的kotlin的旅程,但我得到了一个最小的例子。

代码语言:javascript
运行
复制
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中将不会出现编译时错误或任何警告;错误直到运行时才会被捕获。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69142485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档