在java中使用json Subtype的泛型

时间:2017-09-23 05:32:41

标签: java json generics

我有一项服务,其中我使用具有以下结构的实体

@Entity
public class Product {
    @Id
    private Integer id;
    private String productId;
    private List<MobileCompany<?>> companies;

    // ...
}


public class MobileCompany<T> extends Company<T> {
    private static final long serialVersionUID = -4809948191835736752
    private String  simType;

    // ....
}        

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(name= "samsung", value = Samsung.class),
    @JsonSubTypes.Type(name= "htc",value = Htc.class)})
public class Company<T> implements Serializable {
    private static final long serialVersionUID = -8869676577723436716L;
    private T info;
    private String type;

    // ...
}

我的服务类似于下面的

 Product sample(@RequestBody Product product) {
     ....// not doing any update on product
     return product;
 }

请求如下..

{  
   id:0903673902783,
   companies:[  
      {  
         simType:"DUAL",
         type:"samsung"
      }
   ]
}

并回到以下回复

{  
   id:0903673902783,
   companies:[  
      {  
         simType:"DUAL",
         type:"MobileCompany"
      }
   ]
}

为什么我要输入&#34; MobileCompany&#34;而不是&#34;三星&#34; ?

注意 :&#34; MobileCompany&#34;是扩展公司的类的名称,以及我得到的回复&#34; MobileCompany&#34;作为类型而不是请求中指定的类型。产品有MobileCompany列表。

0 个答案:

没有答案