仅反序列化几个属性
Deserialize only few properties
当使用 Kotlin 和 Moshi 解析 api 响应时,我收到相当大的 JSON 对象返回。
但是,我看到的所有示例都创建了一个对象以传递给包含所有属性的 adapter()
。但是,我只需要其中的4-5个。
我怎样才能做到这一点?目前这不起作用:
val moshi = Moshi.Builder().build()
val jsonAdapter = moshi.adapter(OnLoadUser::class.java)
val onLoadUser = jsonAdapter.nullSafe().lenient().fromJson(data)
它给出了这个错误:
E/EventThread: Task threw exception
java.lang.IllegalArgumentException: Cannot serialize Kotlin type com.biz.app.models.OnLoadUser. Reflective serialization of Kotlin classes without using kotlin-reflect has undefined and unexpected behavior. Please use KotlinJsonAdapterFactory from the moshi-kotlin artifact or use code gen from the moshi-kotlin-codegen artifact.
at com.squareup.moshi.ClassJsonAdapter.create(ClassJsonAdapter.java:97)
at com.squareup.moshi.Moshi.adapter(Moshi.java:145)
at com.squareup.moshi.Moshi.adapter(Moshi.java:105)
确实是一个很大的JSON对象,我只需要4个属性:
{
name: 'John Doe',
email: 'john.doe@gmail.com',
token: 'QWERTY',
guid: '1234-5678-ASDF-9012'
...
}
用@Transient
注释你想跳过的属性,它们将被moshi忽略。
问题是我没有使用 KotlinJsonAdapterFactory()
。我必须添加它:
val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()
并且也在 gradle.build 中,以便它可以作为导入使用:
implementation("com.squareup.moshi:moshi-kotlin:1.12.0")
执行此操作后,它可以使用部分 Kotlin 对象正确解析 JSON 数据。
当使用 Kotlin 和 Moshi 解析 api 响应时,我收到相当大的 JSON 对象返回。
但是,我看到的所有示例都创建了一个对象以传递给包含所有属性的 adapter()
。但是,我只需要其中的4-5个。
我怎样才能做到这一点?目前这不起作用:
val moshi = Moshi.Builder().build()
val jsonAdapter = moshi.adapter(OnLoadUser::class.java)
val onLoadUser = jsonAdapter.nullSafe().lenient().fromJson(data)
它给出了这个错误:
E/EventThread: Task threw exception
java.lang.IllegalArgumentException: Cannot serialize Kotlin type com.biz.app.models.OnLoadUser. Reflective serialization of Kotlin classes without using kotlin-reflect has undefined and unexpected behavior. Please use KotlinJsonAdapterFactory from the moshi-kotlin artifact or use code gen from the moshi-kotlin-codegen artifact.
at com.squareup.moshi.ClassJsonAdapter.create(ClassJsonAdapter.java:97)
at com.squareup.moshi.Moshi.adapter(Moshi.java:145)
at com.squareup.moshi.Moshi.adapter(Moshi.java:105)
确实是一个很大的JSON对象,我只需要4个属性:
{
name: 'John Doe',
email: 'john.doe@gmail.com',
token: 'QWERTY',
guid: '1234-5678-ASDF-9012'
...
}
用@Transient
注释你想跳过的属性,它们将被moshi忽略。
问题是我没有使用 KotlinJsonAdapterFactory()
。我必须添加它:
val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()
并且也在 gradle.build 中,以便它可以作为导入使用:
implementation("com.squareup.moshi:moshi-kotlin:1.12.0")
执行此操作后,它可以使用部分 Kotlin 对象正确解析 JSON 数据。