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

Spring中如何通过ArtistInfo类访问Album POJO的getTitle()方法

解决Spring中通过ArtistInfo访问Album的getTitle()方法问题

嘿,我来帮你搞定这个问题!你之前的写法出错是因为artistinfo.getAlbums()返回的是**List<Album>集合**,而不是单个Album对象,集合本身并没有getTitle()方法,所以直接调用肯定会报错。而且你说得对,不能随便在ArtistInfo里新增单个Album字段,这会和JSON的数组结构不匹配,导致反序列化出问题。

下面给你两种可行的解决方案,完全不会影响JSON格式:

1. 遍历所有专辑,获取每个专辑的标题

如果需要获取某个艺术家的所有专辑标题,可以用循环遍历集合:

// 注意:这里的artistinfo应该是从JSON反序列化得到的对象,不是new出来的空对象!
ArtistInfo artistinfo = // 比如用Jackson的ObjectMapper解析JSON得到实例
// 先判断集合不为空,避免空指针异常
if (artistinfo.getAlbums() != null && !artistinfo.getAlbums().isEmpty()) {
    for (Album album : artistinfo.getAlbums()) {
        String albumTitle = album.getTitle();
        // 这里可以对标题做处理,比如打印或者存储
        System.out.println("专辑标题:" + albumTitle);
    }
}

或者用Java 8+的Stream API实现更简洁的写法:

artistinfo.getAlbums().stream()
          .filter(Objects::nonNull) // 避免单个Album对象为null的情况
          .map(Album::getTitle)
          .forEach(title -> System.out.println("专辑标题:" + title));

2. 获取指定位置的专辑标题

如果你只需要某个特定位置的专辑标题(比如第一个),可以通过索引获取集合里的单个Album对象,再调用getTitle():

ArtistInfo artistinfo = // 反序列化得到的实例
if (artistinfo.getAlbums() != null && !artistinfo.getAlbums().isEmpty()) {
    // 获取第一个专辑的标题
    String firstAlbumTitle = artistinfo.getAlbums().get(0).getTitle();
    System.out.println("第一个专辑标题:" + firstAlbumTitle);
}

⚠️ 一定要先判断集合不为空且不为null,不然会抛出NullPointerException或者IndexOutOfBoundsException!

另外提醒你:你之前写的ArtistInfo artistinfo = new ArtistInfo();是创建了一个空对象,它的albums列表默认是null,这样调用getAlbums()会直接触发空指针异常。实际使用中,这个artistinfo应该是你通过Spring的JSON反序列化工具(比如Jackson)把给定的JSON字符串转换得到的对象,这样albums列表才会有真实数据哦!

内容的提问来源于stack exchange,提问作者saran sanjeevi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:17:51