57장. JacksonXML


jackson XML은 XML 페이로드를 Java 객체로 마샬링하거나 Java 개체를 XML 페이로드로 마샬링하기 위해 XML 페이로드와 함께 Jackson 라이브러리 를 사용하는 데이터 형식입니다. 참고: Jackson에 익숙한 경우 이 XML 데이터 형식은 JSON과 동일하게 작동하므로 JSON serialization/deserialization에 주석이 추가된 클래스와 함께 사용할 수 있습니다.

이 확장은 JAXB의 "코드 첫 번째" 방식 이기도 합니다.

이 데이터 형식은 Woodstox (특히 매우 인쇄와 같은 기능), 빠르고 효율적인 XML 프로세서를 사용합니다.

from("activemq:My.Queue").
  unmarshal().jacksonxml().
  to("mqseries:Another.Queue");

57.1. jacksonXML 옵션

jacksonXML 데이터 형식은 아래에 나열된 15 가지 옵션을 지원합니다.

이름기본값Java Type설명

xmlMapper

 

문자열

조회하고 지정된 ID로 기존 XmlMapper를 사용합니다.

prettyPrint

false

부울

인쇄가 깔끔하게 포맷될 수 있도록 합니다. 기본값은 false입니다.

unmarshalType

 

문자열

Java 유형의 클래스 이름은 unmarshalling할 때 사용할 수 있습니다.

jsonView

 

문자열

POJO를 JSON으로 마샬링할 때 JSON 출력에서 특정 필드를 제외해야 할 수 있습니다. Jackson으로 JSON 뷰를 사용하여 이를 수행할 수 있습니다. 이 옵션은 JsonView 주석이 있는 클래스를 참조하는 것입니다.

include

 

문자열

pojo를 JSON으로 마샬링하려는 경우 pojo에 null 값이 있는 일부 필드가 있습니다. 그리고 이러한 null 값을 건너뛰려면 이 옵션을 NON_NULL으로 설정할 수 있습니다.

allowJmsType

 

부울

JMS 사양의 JMSType 헤더가marshal을 해제하는 데 사용할 FQN 클래스 이름을 지정하는 데 JMS 사용자에 사용됩니다.

collectionType

 

문자열

사용할 레지스트리에서 조회할 사용자 정의 컬렉션 유형을 나타냅니다. 이 옵션은 드물지만 기본적으로 java.util.Collection과 다른 컬렉션 유형을 사용할 수 있습니다.

useList

 

부울

Map 또는 Pojo 목록에 대한 해군을 공개합니다.

enableJaxbAnnotationModule

 

부울

jackson을 사용할 때 JAXB 주석 모듈 활성화 여부 이 기능을 활성화하면 Jackson에서 JAXB 주석을 사용할 수 있습니다.

moduleClassNames

 

문자열

사용자 정의 Jackson 모듈을 사용하려면 FQN 클래스 이름이 있는 String으로 지정된 com.fasterxml.jackson.databind.Module을 사용합니다. 여러 클래스를 쉼표로 구분할 수 있습니다.

moduleRefs

 

문자열

Camel 레지스트리를 참조한 사용자 정의 Jackson 모듈을 사용하려면 다음을 수행합니다. 여러 모듈을 쉼표로 구분할 수 있습니다.

enableFeatures

 

문자열

Jackson com.fasterxml.jackson.databind.ObjectMapper에서 사용할 수 있는 기능 세트. 이 기능은 com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature 또는 com.fasterxml.jackson.databind.MapperFeature의 열거형과 일치하는 이름이어야 합니다.

disableFeatures

 

문자열

Jackson com.fasterxml.jackson.databind.ObjectMapper에서 비활성화할 기능 세트. 이 기능은 com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature 또는 com.fasterxml.jackson.databind.MapperFeature의 열거형과 일치하는 이름이어야 합니다.

allowUnmarshallType

 

부울

활성화된 경우 Jackson은 unmarshalling 중에 CamelJacksonUnmarshalType 헤더를 사용할 수 있습니다. 이는 원하는 경우에만 사용하도록 설정해야 합니다.

contentTypeHeader

 

부울

데이터 형식에서 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식의 경우 XML로 마샬링하거나, 데이터 형식을 JSON으로 마샬링하는 애플리케이션/json입니다.

57.1.1. Spring DSL에서 Jackson XML 사용

Spring DSL에서 데이터 형식을 사용할 때는 먼저 데이터 형식을 선언해야 합니다. 이 작업은 DataFormats XML 태그에서 수행됩니다.

        <dataFormats>
            <!-- here we define a Xml data format with the id jack and that it should use the TestPojo as the class type when
                 doing unmarshal. The unmarshalType is optional, if not provided Camel will use a Map as the type -->
            <jacksonxml id="jack" unmarshalType="org.apache.camel.component.jacksonxml.TestPojo"/>
        </dataFormats>

그런 다음 경로에서 이 ID를 참조할 수 있습니다.

       <route>
            <from uri="direct:back"/>
            <unmarshal><custom ref="jack"/></unmarshal>
            <to uri="mock:reverse"/>
        </route>

57.1.2. 마샬링에서 POJO 필드 제외

POJO를 XML로 마샬링할 때 XML 출력에서 특정 필드를 제외할 수 있습니다. Jackson으로 JSON 뷰 를 사용하여 이를 수행할 수 있습니다. 먼저 하나 이상의 마커 클래스를 만듭니다.

@JsonView 주석과 함께 마커 클래스를 사용하여 특정 필드를 포함하거나 제외합니다. 주석은 getter에서도 작동합니다.

마지막으로 Camel JacksonXMLDataFormat 을 사용하여 위의 POJO를 XML로 마샬링합니다.

결과 XML에서 weight 필드가 없습니다.

<pojo age="30" weight="70"/>
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.