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

Spring Boot中如何在接口响应前修改JSON返回值 调整字段结构

两种方案都可行,以下是具体实现方式和选型参考:

方案1:通过Jackson自定义序列化器直接处理JSON(无需改动业务逻辑)

Spring Boot默认使用Jackson做JSON序列化,你可以自定义序列化规则,直接把List<Image>转为字符串数组输出,不需要重新封装POJO。

  1. 先编写自定义序列化器:
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;

// 请把下方的Image替换为你项目中实际的图片实体类名
public class ImageListSerializer extends JsonSerializer<List<Image>> {
    @Override
    public void serialize(List<Image> imageList, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        // 提取所有imageName生成字符串数组
        List<String> imageNames = imageList.stream()
                .map(Image::getImageName)
                .collect(Collectors.toList());
        gen.writeObject(imageNames);
    }
}
  1. 在POJO的imageList字段上添加注解绑定序列化器即可:
// 商品详情、品牌、店铺类下的imageList字段都可以加这个注解
@JsonSerialize(using = ImageListSerializer.class)
private List<Image> imageList;

优势:

  • 改动量极小,不需要修改原有业务查询逻辑
  • 全局生效,所有用到该字段的接口都会自动输出目标格式
方案2:封装DTO返回(更适合长期维护的业务项目)

如果你的项目是团队协作的迭代项目,更建议用DTO封装返回结构:

  1. 新建接口返回专用的DTO类,把imageList字段定义为List<String>类型,其余字段和原有POJO保持一致
  2. 查询到原有POJO数据后,做属性转换,把imageName提取后赋值给DTO的imageList字段
    示例代码片段:
// 商品详情DTO定义
public class ProductDetailDTO {
    private Integer productDetailCode;
    private BigDecimal price;
    // 其余原有字段省略
    private List<String> imageList;
    // 嵌套的BrandDTO、ShopDTO里的imageList也定义为List<String>即可
}

// 转换逻辑
ProductDetailDTO dto = new ProductDetailDTO();
BeanUtils.copyProperties(originalProductDetail, dto);
List<String> imageNames = originalProductDetail.getImageList().stream()
        .map(Image::getImageName)
        .collect(Collectors.toList());
dto.setImageList(imageNames);

优势:

  • 结构清晰,没有序列化黑盒,后续调整返回结构直接改DTO即可,不影响底层实体类
  • 符合常规项目分层规范,新人接手容易理解
选型建议
  • 如果只是临时调整该字段格式,后续不会有大的结构改动,选方案1,实现最快
  • 如果是长期迭代的业务项目,选方案2,可维护性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:36:03