moshi使用的问题
来源:7-12 案例:数据类的 Json 序列化

An3224978
2024-08-15
val moshi = Moshi.Builder().build()
val jsonAdapter = moshi.adapter()
val userD= UserData(“Aiden”,“asd790831”)
println(jsonAdapter.toJson(userD)) //moshi的序列化
老师,为什么这里我按照官网文档写的 val jsonAdapter = moshi.adapter()。
会出现报错。
报错信息为:This declaration needs opt-in. Its usage must be marked with ‘@kotlin.ExperimentalStdlibApi’ or ‘@OptIn(kotlin.ExperimentalStdlibApi::class)’
第二个问题就是,如果我直接构建
val moshi = Moshi.Builder().build()
val jsonAdapter = moshi.adapter(UserData::class.java)
val userD= UserData(“Aiden”,“asd790831”)
println(jsonAdapter.toJson(userD)) //moshi的序列化
println(jsonAdapter.fromJson(json)) //moshi的反序列化
}
换成这样,编译没有问题,一运行就报错,这是为啥呢。
没有添加注解?
写回答
3回答
-
用反射序列化,加这个
val moshi = Moshi.Builder()
.addLast(KotlinJsonAdapterFactory())
.build()
文档看这里:
https://github.com/square/moshi?tab=readme-ov-file#reflection
注解处理器生成,看这里
https://github.com/square/moshi?tab=readme-ov-file#codegen152024-08-16 -
bennyhuo
2024-08-15
你没有加adapter吧,起码加一下反射库和反射的adapter。10 -
bennyhuo
2024-08-15
第一个,用到了标准库不稳定的api,按提示加一下注解就行了。10
相似问题