Jackson을 사용하여 JSON을 다형성 유형으로 역직렬화: 컴파일 오류 해결
Jackson을 사용하여 다형성 JSON 역직렬화를 구현하려고 하면 사용자가 컴파일 오류를 경험할 수 있습니다. -time 오류 "ObjectMapper 유형의 readValue(JsonParser, Class) 메서드는 mapper.readValue(root, AnimalClass)를 호출할 때 인수(ObjectNode, Class
이 문제를 해결하려면 다형성 역직렬화를 위한 Jackson의 주석 기반 접근 방식을 활용하는 것을 고려해 보세요. 여기에는 추상 Animal 클래스와 해당 하위 클래스(Dog 및 Cat)에 @JsonTypeInfo, @JsonSubTypes 및 @JsonIgnoreProperties 주석을 추가하는 작업이 포함됩니다. 예는 다음과 같습니다.
@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 { protected String name; // Getters and setters for the name property }
하위 클래스에서는 필요에 따라 추가 속성을 지정할 수 있습니다. 예를 들어 Dog에는 breed 속성이 있고 Cat에는 favoriteToy 속성이 있을 수 있습니다.
JSON을 Animal 객체로 역직렬화할 때 Jackson은 @type 속성을 사용하여 인스턴스화할 특정 하위 클래스를 결정합니다. 테스트 사례의 예는 다음과 같습니다.
ObjectMapper objectMapper = new ObjectMapper(); Animal myDog = new Dog("ruffus", "english shepherd"); Animal myCat = new Cat("goya", "mice"); String dogJson = objectMapper.writeValueAsString(myDog); Animal deserializedDog = objectMapper.readValue(dogJson, Animal.class); String catJson = objectMapper.writeValueAsString(myCat); Animal deseriliazedCat = objectMapper.readValue(catJson, Animal.class);
이 접근 방식을 사용하면 다형성 JSON을 해당 하위 클래스로 원활하게 역직렬화하여 앞서 언급한 컴파일 시간 오류를 방지할 수 있습니다.
위 내용은 Jackson을 사용하여 JSON을 다형성 유형으로 역직렬화하고 컴파일 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!