API控制器返回一个接口的列表时,如何在JSON响应中包括子类的属性?
创始人
2024-09-07 21:01:13
0

一种解决方法是使用自定义的DTO(数据传输对象)。在DTO中包含基本接口和子类的属性,然后将DTO列表返回给API控制器。

以Java为例,假设有以下接口和两个子类:

public interface Animal {
  String getName();
}

public class Cat implements Animal {
  private String name;
  private String color;

  public Cat(String name, String color) {
    this.name = name;
    this.color = color;
  }

  @Override
  public String getName() {
    return name;
  }

  public String getColor() {
    return color;
  }
}

public class Dog implements Animal {
  private String name;
  private int age;

  public Dog(String name, int age) {
    this.name = name;
    this.age = age;
  }

  @Override
  public String getName() {
    return name;
  }

  public int getAge() {
    return age;
  }
}

定义一个DTO,它包含基本接口和子类的属性:

public class AnimalDTO {
  private String name;
  private String color;
  private int age;

  public AnimalDTO(Animal animal) {
    this.name = animal.getName();
    if (animal instanceof Cat) {
      this.color = ((Cat) animal).getColor();
    } else if (animal instanceof Dog) {
      this.age = ((Dog) animal).getAge();
    }
  }

  // getters
}

在API控制器中,将基本接口的列表转换为DTO列表:

@RestController
public class AnimalController {
  @GetMapping("/animals")
  public List getAnimals() {
    List animals = Arrays.asList(new Cat("Lily", "White"), new Dog("Max", 2));
    return animals.stream().map(AnimalDTO::new).collect(Collectors.toList());
  }
}

当调用API控制器时,返回的JSON响应中将包含子类的属性:

[
  {"name": "Lily", "color

相关内容

热门资讯

透视ai代打(德扑输赢)外挂透... 1、透视ai代打(德扑输赢)外挂透明挂辅助软件(透视)德州ai机器人(有挂方法)-哔哩哔哩。2、德扑...
玩家必备科技!WPK程序(we... 玩家必备科技!WPK程序(wepoKE)外挂透明挂辅助APP(透视)微扑克教程(有挂工具)-哔哩哔哩...
透视存在(大厅wpk)外挂透明... 【福星临门,好运相随】;透视存在(大厅wpk)外挂透明挂辅助插件(透视)软件透明挂(2022已更新)...
科普常识(WPK代码)外挂透明... WePoke高级策略深度解析‌;科普常识(WPK代码)外挂透明挂辅助软件(辅助挂)德州ai机器人(有...
今日科普!gg扑克(wEpoK... 今日科普!gg扑克(wEpoKe)外挂透明挂辅助挂(透视)2024新版技巧(确实有挂)-哔哩哔哩;揭...
记者爆料(Wepoke挂)外挂... 记者爆料(Wepoke挂)外挂透明挂辅助神器(辅助挂)透视辅助(2023已更新)(哔哩哔哩);《WP...
发现一款(wpk苹果版)外挂透... 发现一款(wpk苹果版)外挂透明挂辅助脚本(透视)透视辅助(有挂透明挂)-哔哩哔哩;wpk苹果版最新...
透视安卓版!Wepoke自建房... 透视安卓版!Wepoke自建房(WepOke)外挂透明挂辅助器安装(透视)黑科技教程(有挂教学)-哔...
玩家必备科技(WPK开发)外挂... 玩家必备科技(WPK开发)外挂透明挂辅助app(透视)透视辅助(2021已更新)(哔哩哔哩)这是由厦...
一分钟揭秘(Wepoke后台)... 1、一分钟揭秘(Wepoke后台)外挂透明挂辅助挂(辅助挂)透视辅助(真的有挂)-哔哩哔哩;详细教程...