[英]Moshi and Retrofit2: Unable to read service response
我正在尝试从网络服务读取 json 响应,但没有成功。 这是我收到的json:
{
"rsp": {
"@code": "0",
"@message": ""
},
"listOfStrings":[]
}
这是我解析响应的相对数据类
data class Response(
val rsp : Rsp,
val listOfStrings : List<String>
)
data class Rsp(
@Json(name = "@code")
val code : String,
@Json(name = "@message")
val message : String
)
但似乎 moshi 由于某种原因无法将 json 解析为对象,因为我总是得到带有所有空字段的 Response 对象。
那么怎么了? json 响应字段的“@”字符可能会导致问题吗?
更新
现在我可以通过将 @Json 注释更改为 @field:Json 来正确解析响应:
data class Rsp(
@field:Json(name = "@code")
val code : String,
@field:Json(name = "@message")
val message : String
)
但我很想知道它为什么有效。
@field:如果您希望 moshi-kotlin 根据此处的讨论与 proguard 一起使用,则需要 Json: https : //github.com/square/moshi/issues/315
试试这个模型,让我知道它是否有效:
@Parcelize
data class Response(
@Json(name = "rsp")
val rsp: Rsp,
@Json(name = "listOfStrings")
val listOfStrings: List<String>
) : Parcelable {
@Parcelize
data class Rsp(
@Json(name = "@code")
val code: String,
@Json(name = "@message")
val message: String
) : Parcelable
}
编辑:如果它不起作用,请尝试在具有@
字段名称后面添加反斜杠。
比如: @Json(name = "\\@code")
。
问题更新后更新:
您需要添加moshi-kotlin
依赖项,然后使用KotlinJsonAdapterFactory
val moshi = Moshi.Builder()
// ... add your own JsonAdapters and factories ...
.add(KotlinJsonAdapterFactory())
.build()
然后 moshi 无法忽略@Json
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.