【发布时间】:2020-04-14 11:30:43
【问题描述】:
我必须在一个项目中使用 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 但为 BEGIN_ARRAY 在第 1 行第 2 列路径 $
正如我之前所说,当我使用其他 JSON 文件时它可以工作。如果我只为 API 中的一个对象排队并且我说 Notes 只是来自 Note 的变量,它也可以正常工作。我没有收到任何错误,我会打印出那张便条。
【问题讨论】:
-
对于您的第二个 json,返回类型应直接为
List<Note> -
哦,对不起,是的,我实际上在我的代码中将它写为 List
。我将更新上面的代码。谢谢。 -
来自评论:如果有问题,请尽可能提供您的
stacktrace。如果用户不知道您的问题是什么,他们将无法提供帮助。谢谢 -
好的,马上添加。谢谢你的建议。
-
感谢编辑。错误清楚地表明您的映射器需要
List类型的对象,但您的json包含和array。请在下面阅读我的答案:TL;DR,您不需要第一堂课。你只需要第二个。
标签: android api android-studio kotlin