You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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-

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:49:35