android - Moshi 和 Retrofit2:应为 BEGIN_OBJECT 但为 STRING
问题描述
我在我的项目中面临这个问题。我从 api 调用收到如下响应:
{
"aResponse": {
"listOfSomething": [
//here some data
]
}
}
相关数据类是
data class ResponseClass(
val aResponse : AResponse
)
data class AResponse(
val listOfSomething : List<String>
)
当“listOfSomething”为空时,我不会收到以下回复:
{
"aResponse": {
"listOfSomething": ""
}
}
抛出(当然)异常
com.squareup.moshi.JsonDataException: Expected BEGIN_OBJECT but was STRING
我该如何解决?
解决方案
您会收到此错误,因为当您获取数组的数据以及没有数据获取字符串时,这在改造中是错误的。
如果没有数据 insise listOfSomething 然后要求后端发送空数组而不是字符串。
{
"aResponse": {
"listOfSomething": []
}
}
代替
{
"aResponse": {
"listOfSomething": ""
}
}
推荐阅读
- python - ConvertAPI:Python 2.7.10 中的 PDF 到 JPEG - 如何获取转换结果 URL?
- ruby-on-rails - 指向 has_many_attached 文件的 Active Storage 链接
- c# - 尽管从未更改值,但无法在 EF 中插入标识列
- c# - 在 Button 动画的路径上绘制轨迹
- apache-camel - 在 apache camel 中使用 netty4 组件执行 post
- python - 使用 Python 3.5 执行 PowerShell 命令
- sql-server - SQL Server:某些列的最大值以及其他列值
- ruby-on-rails - Rails 中的正则表达式验证
- python - cross column cell validation on a dynamic QTableWidget
- javafx - How to set minHeight and minWidth to a Window in TornadoFX?