android - Moshi 将值反序列化为 null
问题描述
我最近从 Gson 切换到 Moshi 并且无法解析一些 Json。
{
"access_token": "-LNe2LQ7DQH5Y2zs_W5iUumKuaUE",
"token_type": "bearer",
"device_id": "461f-837e-af5050c92fe9",
"expires_in": 3600,
"scope": "*"
}
这是模型类:
data class AuthToken(
@Json(name = "access_token") val accessToken: String,
@Json(name = "token_type") val tokenType: String,
@Json(name = "device_id") val deviceId: String,
@Json(name = "expires_in") val expiresIn: Int,
@Json(name = "scope") val scope: String
)
每当我在改造客户端中切换到使用 Moshi 时,都会收到以下错误:
java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull
我使该字段可以为空,但是它总是被反序列化为空。我检查了我的改造响应,使用 Gson 或 Moshi 时(显然)是相同的。我究竟做错了什么?
解决方案
出于某种原因,当我明确告诉AuthToken
类生成适配器时 - 我没有收到空值。
@JsonClass(generateAdapter = true)
data class AuthToken(
@Json(name = "access_token") val accessToken: String,
@Json(name = "token_type") val tokenType: String,
@Json(name = "device_id") val deviceId: String,
@Json(name = "expires_in") val expiresIn: Int,
@Json(name = "scope") val scope: String
)
推荐阅读
- sql - PostgreSQL:在嵌套 CASE WHEN 中使用文本参数会显着减慢查询速度
- assembly - db 程序集中字符串的最大长度
- reactjs - 在 Reactjs 中单击外部 url 时如何重定向到不同的组件?
- laravel - 跳过数组验证规则的第一个索引?
- mysql - 获取 django.core.exceptions.ImproperlyConfigured:加载 MySQLdb 模块时出错,同时尝试执行第一次迁移
- arrays - 在 React js 中过滤后分配一个常量
- java - 如何在嵌套布局中显示自定义 View 类?
- c# - 使用 Single InstanceContextMode 在 WCF 服务上调用异步方法
- javascript - 如何在 asp.net 文本框中的 java-script 中使用数组值实现自动完成,
- ios - Pod 更新后找不到“Parse/PFFile.h”文件