不需要自定義的反序列化器。一個智能@JsonTypeInfo
將做的伎倆。
請參見下面的類和接口可以是什麼樣子:
@JsonTypeInfo(use = Id.NAME, include = As.WRAPPER_OBJECT)
@JsonSubTypes({ @Type(value = ApplicationIcon.class, name = "application"),
@Type(value = FolderIcon.class, name = "folder") })
public interface Icon {
}
@JsonRootName("application")
public class ApplicationIcon implements Icon {
public String displayName;
public String bundleId;
// Getters and setters ommited
}
@JsonRootName("folder")
public class FolderIcon implements Icon {
public String some;
public Integer num;
// Getters and setters ommited
}
public class IconWrapper {
private List<Icon> icons;
// Getters and setters ommited
}
要反序列化JSON,請執行下列操作:
String json = "{\"icons\":[{\"application\":{\"displayName\":\"Facebook\",\"bundleId\":\"com.facebook.com\"}},{\"folder\":{\"some\":\"value\",\"num\":3}}]}";
ObjectMapper mapper = new ObjectMapper();
IconWrapper iconWrapper = mapper.readValue(json, IconWrapper.class);
只需創建一個自定義解串器,根據'key'切換。 –
@BoristheSpider不需要自定義的反序列化器:) –