android - 无法从 Kotlin 中的 api 的 JSON 获取数据
问题描述
我必须将 Kotlin 用于一个项目。假设我有一些名为 Note 的对象。我通过以下方式制作了文件
@Parcelize
data class Notes (
val notes: List<Note>
): Parcelable
@Parcelize
data class Note (
val id: Int,
val text: String
): Parcelable
我注意到如果返回的 JSON 的结构如下,我还添加了 @SerializedName("all_notes")
{
"all_notes": [
{
"id": 1,
"text": "Some text"
},
它可以工作,但如果返回的 JSON 是这样的结构,我删除 @SerializedName 表示法
[
{
"id": 1,
"text": "Some text"
},
我无法获取数据。
我猜我必须以某种方式使用序列化名称,但我不确定如何使用。我需要使用第二种 JSON 文件。任何人都可以帮忙吗?
编辑:有人提出发布我得到的错误的想法,所以在这里
我现在得到的错误是
错误:java.lang.IllegalStateException:预期 BEGIN_OBJECT 但在第 1 行第 2 列路径 $ 处为 BEGIN_ARRAY
正如我之前所说,当我使用其他 JSON 文件时它可以工作。如果我只为 API 中的一个对象排队并且我说 Notes 只是来自 Note 的变量,它也可以正常工作。我没有收到任何错误,我会打印出一张便条。
解决方案
我看不出你的data
课程有问题,你的json
. 除了你不需要data
头等舱。您可以使用您的第二类直接映射您的 json,因为您的 json 不会以列表响应。
这可能对您有帮助。使用此网站为您的 json 响应构建kotlin
数据类。
除非您的类字段的名称与您的属性不同,否则您不需要使用SerializedName
注释,因为它只是映射到您的类实例时使用的映射器挂钩。data
json
Gson
json
如果上述内容对您没有帮助,请进一步澄清您的问题,我们需要知道您的问题到底是什么,或者stacktrace
您是否有任何问题。
推荐阅读
- android-studio - sqldelight Generation 的 Gradle 构建失败,第 17:10 行 - '{' 预期,得到 ':' Android Studio 版本 4.1.2
- javascript - 数据表重新加载()的问题
- mongoose - Mongoose 使用 $and 应用相同属性的两个过滤器
- out-of-memory - 关于 OPCache 的问题
- dataset - Tableau CRM 迁移数据集
- python - 如何在 Python 中使用 numpy 快速计算两个不同矩阵的每一行的点积
- python - 更改数据框中的列名称并将其融化
- amazon-web-services - 如何在字典列表中使用 set_fact?
- java - 在 Java 中处理多个 CompletableFuture
- .net - Team Foundation Server 2013 构建失败/在本地构建但不在服务器上