찾다
Javajava지도 시간Jackson을 사용하여 JSON을 다형성 유형으로 역직렬화하고 컴파일 오류를 방지하는 방법은 무엇입니까?

How to Deserialize JSON with Jackson into Polymorphic Types and Avoid Compile Errors?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
GO에서 National Secret SM4 및 SM2 알고리즘의 암호화, 암호 해독 및 상호 연결을 구현하는 방법은 무엇입니까?GO에서 National Secret SM4 및 SM2 알고리즘의 암호화, 암호 해독 및 상호 연결을 구현하는 방법은 무엇입니까?Apr 19, 2025 pm 06:27 PM

Go Language는 GO 언어에서 SM4 및 SM2의 암호화 및 암호 해독을 구현합니다. 이 기사는 Go Language를 사용하여 GO Language의 암호화 및 SM2 알고리즘의 암호화 및 암호 해독 프로세스를 구현하여 Java의 요구를 충족시키는 방법을 자세히 소개합니다.

파이썬 프로젝트에서 레이어링을해야합니까?파이썬 프로젝트에서 레이어링을해야합니까?Apr 19, 2025 pm 06:24 PM

파이썬 프로젝트에 묶을 필요가 있습니까? 최근에 Python을 배우고있을 때 많은 Django 오픈 소스 프로젝트가 Views Function에서 많은 것을 썼다는 것을 알았습니다.

맵 구조를 사용하여 시스템 도킹에서 필드 매핑 문제를 단순화하는 방법은 무엇입니까?맵 구조를 사용하여 시스템 도킹에서 필드 매핑 문제를 단순화하는 방법은 무엇입니까?Apr 19, 2025 pm 06:21 PM

시스템 도킹의 필드 매핑 처리 시스템 도킹을 수행 할 때 어려운 문제가 발생합니다. 시스템의 인터페이스 필드를 효과적으로 매핑하는 방법 ...

Intellij Idea는 Javaagent 및 RMI 기술을 통해 Spring Boot 프로젝트의 포트 번호를 어떻게 식별합니까?Intellij Idea는 Javaagent 및 RMI 기술을 통해 Spring Boot 프로젝트의 포트 번호를 어떻게 식별합니까?Apr 19, 2025 pm 06:18 PM

Intellijidea는 SpringBoot 프로젝트의 포트 번호를 어떻게 인식합니까? IntellijideAultimate 버전을 사용하여 봄을 시작하십시오 ...

효율적인 프로그래밍 : 안정적인 코드 도구와 리소스를 어떻게 찾을 수 있습니까?효율적인 프로그래밍 : 안정적인 코드 도구와 리소스를 어떻게 찾을 수 있습니까?Apr 19, 2025 pm 06:15 PM

효율적인 프로그래밍 : 신뢰할 수있는 코드 도구 및 리소스를 찾고 많은 프로그래머가 효율성을 향상시키고 대규모 정보를 피하기 위해 편리한 코드 도구 웹 사이트를 찾고 싶어합니다 ...

JWT가 동적 권한 변경을 구현할 수 있습니까? 세션 메커니즘의 차이점은 무엇입니까?JWT가 동적 권한 변경을 구현할 수 있습니까? 세션 메커니즘의 차이점은 무엇입니까?Apr 19, 2025 pm 06:12 PM

JWT 및 세션에 대한 혼란과 답변은 JWT 및 세션을 학습 할 때 많은 초보자가 종종 성격과 적용 가능한 시나리오에 대해 혼란스러워합니다. 이 기사는 J ...을 중심으로 진행됩니다.

Websocket Communication을 지원하기 위해 Windows Server 2019 방화벽을 올바르게 구성하는 방법은 무엇입니까?Websocket Communication을 지원하기 위해 Windows Server 2019 방화벽을 올바르게 구성하는 방법은 무엇입니까?Apr 19, 2025 pm 06:09 PM

Windows Server 2019 방화벽과 WebSocket 간의 통신 문제에 대한 자세한 설명. SpringBoot를 사용하여 개발 된 JAR 프로그램은 Windows Server 2019에 배포되었습니다 ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경