android - codegen生成的adapter-constructor中的`moshi`是什么意思?
问题描述
我是 kotlin-android 开发的新手。
我想解析一个像
{
"name": "This is my name",
}
到一个Foo
定义为的类
Foo.kt
@JsonClass(generateAdapter = true)
data class Foo(val name: String)
该类Foo
文件通过codegen生成代码如下。
FooJsonAdapter.kt(由 codegen 生成)
class FooJsonAdapter(moshi: Moshi) : JsonAdapter<Foo>() {
private val options: JsonReader.Options
private val stringAdapter: JsonAdapter<String>
override fun toString(): String
override fun fromJson(reader: JsonReader): Foo
override fun toJson(writer: JsonWriter, value: Foo?)
}
类的FooJsonAdapter
构造函数指定Moshi
对象,这是我的问题。应该将什么样的Moshi
对象传递给构造函数?我尝试了以下方法,但这不起作用。
MainActivity.kt
Moshi.Builder().add(
FooJsonAdapter(
Moshi.Builder().build()
)
).build()
错误信息
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.hoge, PID: 31816
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hoge/com.example.hoge.MainActivity}: java.lang.IllegalArgumentException: Expected at least one @ToJson or @FromJson method on com.example.hoge.FooJsonAdapter
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3260)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3396)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7319)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
Caused by: java.lang.IllegalArgumentException: Expected at least one @ToJson or @FromJson method on com.example.hoge.FooJsonAdapter
at com.squareup.moshi.AdapterMethodsFactory.get(AdapterMethodsFactory.java:137)
at com.squareup.moshi.Moshi$Builder.add(Moshi.java:237)
at com.example.hoge.MainActivity.onCreate(MainActivity.kt:14)
at android.app.Activity.performCreate(Activity.java:7783)
at android.app.Activity.performCreate(Activity.java:7772)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3235)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3396)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7319)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
我该怎么办?谢谢!
解决方案
推荐阅读
- powershell - powershell hexedit中奇怪的字节事物显示了除用于删除bom字节的脚本之外的其他数据
- python - 在 Django (Python) 中读取 csv 文件
- javascript - html在表单onsubmit中发送数组
- c - 从共享资源读取时,我需要线程同步吗?(C)
- wordpress - Woocommerce 电子邮件设置,内容类型下拉菜单不起作用
- nginx - Google 端点在日志中为 GET / 提供了无效的 HTTP 模板
- reactjs - TypeScript + React <- 传递道具
- javascript - 想要将 y 轴刻度设置为固定值 Highcharts
- python - 在 Python 中计算时差时出错
- c# - 一种方法中多个小型实体框架查询的性能/效率