試圖解決使用Jackson 的ObjectMapper 反序列化多態性類型:解決編譯錯誤
試圖解決使用Jackson 的ObjectMapper 反序列化多態類型:解決編譯錯誤
return mapper.readValue(root, animalClass);
通用 readValue() 方法需要 TypeReference 或 Class 作為第二個參數,但 AnimalClass是 Class
使用註解的解決方案:
@JsonIgnoreProperties(ignoreUnknown = true) @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY) @JsonSubTypes({ @JsonSubTypes.Type(value = Dog.class, name = "Dog"), @JsonSubTypes.Type(value = Cat.class, name = "Cat") } public abstract class Animal { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
public class Dog extends Animal { private String breed; public Dog() { } // Constructors and getters/setters omitted for brevity } public class Cat extends Animal { private String favoriteToy; // Constructors and getters/setters omitted for brevity }
return mapper.readValue(root, Animal.class);
以上是如何使用 Jackson 將 JSON 反序列化為多態類型:解決「無法直接映射」編譯錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!