Tôi có lớp mô hình JSON này,Jackson kiểu đa hình xử lý - tài sản bỏ đi
public class Response {
@JsonTypeInfo(use= JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="category")
@JsonSubTypes({
@Type(value = Series.class, name = "Series"),
@Type(value = Movies.class, name = "Movies")})
public static abstract class Asset {
public String category;
public String id;
}
public static class Series extends Asset {
public String seriesName;
public int seasonNumber;
}
public static class Movies extends Asset {
public String movieName;
}
public Asset[] assets;
}
Khi tôi cố gắng deserialize JSON sau,
{
assets: [
{
"category": "Series",
"id": "ID1",
"seriesName": "SeriesName1",
"seasonNumber": 1
},
{
"category": "Movies",
"id": "ID2",
"movieName": "MovieName1"
}
]
}
tôi thấy rằng tất cả các thuộc tính được deserialized đúng cách, ngoại trừ thuộc tính category
, là null
trong cả hai loại nội dung.
Tôi có làm gì sai không? Hay đây là hành vi mong đợi - tài sản được sử dụng để suy luận loại con được loại bỏ trong quá trình deserialization?
Bạn cũng đã kiểm soát trên serialization? Tôi có nghĩa là nếu bạn có thể thêm các thuộc tính khác vào dòng json – eugen
@eugen Tôi không có quyền kiểm soát việc tuần tự hóa. Tôi nghĩ rằng thêm một loại phân biệt đối xử trong các loại phụ là cách dễ dàng hơn để đi. – zihaoyu