gpt4 book ai didi

java - 在 Java 中处理 REST 结果 (json) 中不一致的数据类型

转载 作者:行者123 更新时间:2023-11-30 02:50:47 25 4
gpt4 key购买 nike

我是新人,尝试在 Android Studio 的 setlist.fm 上使用 Rest API,但在将 GET 请求结果拟合到 Java 数据模型中时遇到一些问题。特别是,我将“集合”(“集合”是指在​​音乐会上演奏的集合)建模为 Java 类。但通常情况下,我从 HTTP 请求中获取的结果已“设置”为空字符串甚至数组。

我将使用以下针对所有 Radiohead 歌单的 GET 请求作为示例: http://api.setlist.fm/rest/0.1/artist/a74b1b7f-71a5-4011-9441-d0b5e4122711/setlists.json

请注意,在大多数情况下,“集合”是一个对象。但在某些情况下,它是一个字符串。在其他情况下,它是一个数组

当我尝试使用以下代码行使用 Gson 将 json 解析到我的数据模型中时,我的 Android Studio 出现以下错误:

 gson.fromJson(result.toString(),Response.class);

它似乎在“sets”显示为空字符串而不是对象的实例上失败:

Expected BEGIN_OBJECT but was STRING at line 1 column 942 path $.setlists.setlist[0].sets

有人对如何处理此类事情有建议吗?我在迄今为止查找过的所有艺术家中都注意到了这一点。谢谢!

最佳答案

假设 Response 是您编写的包含 json 主要字段的类,并且在其中的某个时刻您拥有:

@SerializedName("setlist")
private List<MyItem> setlist;

我还假设您的 MyItem 类包含该字段:

@SerializedName("sets")
private List<MySet> sets;

如果让 Gson 解析它,当它找到一个字符串而不是 MySet 对象的列表(-> 数组)时,它将失败。

但是你可以write a custom TypeAdapter为您的MyItem

有很多关于如何编写 Gson TypeAdapter 的文档,查找一下。

关于java - 在 Java 中处理 REST 结果 (json) 中不一致的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38714747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com