2017-09-19 14 views
0

我想实现以下JSON结构:杰克逊:如何包装对象用钥匙,这是序列化对象的属性之一?

"laptops":[ 
     { 
     "apple":{ 
      "serial":"value", 
      "manufacture_date":"some_date" 
     }, 
     "lenovo":{ 
      "serial":"value", 
      "manufacture_date":"some_date" 
     } 
     } 
    ] 

"lenovo""apple"按键都会有完全相同的结构。不会有不同类型的笔记本电脑的附加属性。说了这么多,就没有必要实现类型层次结构。和一个POJO应该这样做:

public final class Laptop { 

    private String serial; 

    @JsonProperty(name="manufacture_date") 
    private String manufactureDate; 

    private String make; 

    public Laptop() {} 

    public String getSerial(){ 
    return serial; 
} 

    public setSerial(String serial){ 
    this.serial = serial; 
    } 

    public String getManufactureDate(){ 
    return manufactureDate; 
    } 

    public setManufactureDate(String manufactureDate){ 
    this.manufactureDate = manufactureDate; 
    } 

    public String getMake(){ 
    return make; 
    } 

    public setMake(String make){ 
    this.make = make; 
    } 

} 

正如你在Laptop POJO我介绍make性质看,但我不希望它被序列化到键值对。相反,我想make值成为自身作为Laptop对象的包装。

我该如何做到这一点?

回答

2

使用Map<String, Laptop>,其中关键是每台电脑的品牌。和注释make@JsonIgnore,以避免其序列。