扩展ArrayList导致Jersey,Java中缺少属性

时间:2016-07-27 13:49:04

标签: java jersey

我正在创建一个包含汽车收集资源的休息服务, 在代码中我设置了集合的ID以供以后使用, 但是,当我返回CarResources的响应时,ID丢失了。 IDE似乎也没有看到'这个属性

代码:

public class CarResources extends ArrayList<CarResource> {

  private String id;

  public void setId(String id) {
    this.id = id;
  }

  public String getId() {
    return id;
  }


  public CarResources (String id) {
    this.id = id;
  }

响应:

[
//Missing in the response is an id property of the entire List
  {
    "CarResource": {
      "id": "TOYOTA_CAMERI",
      "name": "Toyota",
      "carType": "GAS"
      }
   },
     {
    "CarResource": {
      "id": "HONDA_TYPE_R",
      "name": "HONDA",
      "carType": "GAS"
      }
   }


]

1 个答案:

答案 0 :(得分:3)

最简单的事情是扩展ArrayList并且只需将列表作为自定义对象的成员,它将进行序列化而无需任何额外的努力。在这种情况下继承不是正确的解决方案,组成是。

如果您坚持延长ArrayList,则需要使用@JsonProperty注释新实例成员和/或编写自定义JsonSerializer<CarResources>并使用@JsonSerialize注释该类以使用新的自定义序列化程序,因为正在使用默认的ArrayList序列化程序。