cấu trúc JSON của tôi:JsonSubTypes, danh sách các đối tượng polymorpic và Parcelable
{
...
"type":"post", // Type could vary
"items":[] // Array of items, each item is typeOf("type")
...
}
Làm thế nào tôi có thể deserialize và bưu kiện đúng danh sách items
bên POJO tôi:
public class ItemsEnvelope {
private String type;
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
property = "type",
visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = A.class, name = "A"),
@JsonSubTypes.Type(value = B.class, name = "B"),
@JsonSubTypes.Type(value = C.class, name = "C")
})
private List<Item> items;
interface Item extends Parcelable {}
class A implements Item {
// Bunch of getters/setters and Parcelable methods/constructor
}
class B implements Item {
// Bunch of getters/setters and Parcelable methods/constructor
}
class C implements Item {
// Bunch of getters/setters and Parcelable methods/constructor
}
// Bunch of getters/setters and Parcelable methods/constructor
}
Để bưu kiện danh sách gõ một đối tượng CREATOR
nên được cung cấp, một giao diện, rõ ràng là không thể có. Tôi có nên sử dụng lớp trừu tượng thay vì giao diện không?
Đã thêm cấu trúc json vào câu hỏi. Tôi nên sử dụng phương pháp bao gồm trong trường hợp của tôi? – localhost
Không có cách nào để chỉ ra các loại của tất cả các phần tử của một mảng JSON; Jackson dự kiến sẽ nhập thông tin về từng phần tử. Vì vậy, để hỗ trợ sắp xếp này, bạn sẽ cần phải viết một deserializer tùy chỉnh (và serializer nếu bạn muốn tạo JSON như vậy). – StaxMan