如何通过Gson/Retrofit2获取Google Books API返回的对象内字符串?
解决Google Books API获取Title为Null的问题
嗨,这个问题我太熟悉了!你的请求能成功返回,但title拿不到变成null,核心原因是你的实体类结构和Google Books API的真实返回格式不匹配。让我一步步给你讲清楚怎么改:
问题根源
Google Books API返回的书籍数据里,title并不是直接在items数组的每个对象顶层,而是嵌套在volumeInfo这个子对象里的。你原来的Book类直接声明title字段,Gson找不到对应的数据,自然就解析成null了。
修复步骤
1. 创建VolumeInfo实体类
这个类用来封装volumeInfo对象里的字段,先把title加进去:
public class VolumeInfo { @SerializedName("title") @Expose private String title; public String getTitle() { return title; } }
如果之后还需要作者、出版社等信息,都可以在这个类里添加对应字段。
2. 修改Book类,添加volumeInfo字段
把原来的title字段替换成VolumeInfo对象:
public class Book { @SerializedName("volumeInfo") @Expose private VolumeInfo volumeInfo; public VolumeInfo getVolumeInfo() { return volumeInfo; } }
3. 调整获取title的代码
现在要通过volumeInfo来获取title,修改notifyDataReceived里的日志代码:
Log.d(TAG, "TITLE 1: " + items.get(0).getVolumeInfo().getTitle());
验证一下
你可以先手动请求一下API地址https://www.googleapis.com/books/v1/volumes?q=android,看看返回的JSON结构,确认title确实在volumeInfo下面。这样修改后,就能正常拿到书籍标题啦!
内容的提问来源于stack exchange,提问作者Rarity7-
相关产品推荐
相关产品推荐

