💻
Albert's Til
GitHub
  • 매일매일 조금씩 성장하기
    • README
    • CS
      • Network
      • HTTP
        • NO-CACHE
      • 오류 코드
      • ORM 도구
      • Design Pattern
        • CQRS Pattern
          • Event Sourcing and CQRS pattern
        • Builder Pattern
    • DB
      • MySQL
        • Timeline
        • Pagination
        • Index
        • Database Performance Optimization Strategies
        • B+ tree
        • MySQL Connectors VS MySQL Shell(Scripting) VS MySQL Workbench
        • MySQL Storage Engine Architecture
      • Normalization & Denormalization
      • JPA
        • @Transactional
        • Why JPA?
        • About JPA
        • N+1 Issue
        • Index
        • ElementCollection&CollectionTable
        • orphanRemoval
        • CascadeType
        • Use Subselect
        • Dynamic Instance Creation
        • Paging
        • Order
        • Spefication
        • mappedBy
      • MongoDB
        • ObjectId
      • Why MySQL?
      • ACID properties of transactions
      • Between JPA and JDBC
      • Identifiers in Hibernate/JPA
    • Java
      • Jackson de/serialize
      • Collections.singletonList() vs List.of()
      • Manage dependencies in Gradle
      • Logging Level
      • Bean Validation
      • JVM Internals
        • Threads
          • Frame
        • Shared Between Threads
          • Classloader
            • Class Loader Hierarchy
            • Loading Linking Initialization
      • Java Collection Framework
      • Annotation
      • Generic
      • 디미터 법칙
    • Spring
      • Caching
      • Spring Integration Overview
        • ThreadPollTaskExecutor
        • Messaging Bridge
        • Channel Adapter
        • Poller
        • Configuration and @EnableIntegration
        • Message Endpoints
        • Message Channels
      • HATEOAS
      • @Autowired vs Constructor Dependency Injection
      • Spring Security
        • JWT 토큰 사용한 인가
        • OAuth 2 Login
        • OAuth 2 인증
        • 인가
        • 인증
        • PasswordEncoder
      • IoC Container
      • Filter,Interceptor,AOP,Argument Resolver
      • Spring Annotation
      • About Spring
    • Kafka
      • Error Channel
    • Infra
      • Scale Up || Scale Out
      • Docker
        • Dockerfile
        • Docker Hub Deploy
        • Command
      • Cloud 유형
        • Infrastructure as a Service
        • Platform as a Service
        • Software as a Service
      • 무중단 배포
        • 엔진엑스(Nginx)
      • 코드 자동 배포
        • Technical
      • AWS EC2
        • PEM(Privacy Enhanced Mail) 키
      • AWS RDS
      • AWS S3
    • CodeSquad
      • Spring Boot Project 1주차 회고
      • Spring Boot Project 2주차 회고
      • Spirng Boot Project 3주차 회고
      • Spring Boot Project 4주차 회고
    • Foody Moody 프로젝트
      • Query Performance Comparison
      • HeartCount Asynchronous Issue
      • DeferredResult
      • ResponseBodyEmitter
      • SseEmitter (Spring)
      • Server-Sent Events (SSE)
      • 기술 스택 적용 이유
      • NO-CACHE(HTTP)
      • Transactional
    • DDD
      • AggregateId
    • Test
      • RestAssured
    • Coding and Algorithmic Problems
      • 819. Most Common Word
      • 344. Reverse String
      • 125. Valid Palindrome
      • 937. Reorder Data in Log Files
    • Node
      • Async... Await...
      • Custom Transactional Decorator Challenger
    • Python
      • Python Basic Grammar
        • Comments and Input/Output
        • Variable
        • Data type
        • Operations and syntax
        • List,Tuple,Dictionary,Set
        • Function
        • Conditional statement
        • Loop
    • HTML
      • HTML Basic
      • HTML Basic Tags
      • HTML Form Tags
      • HTML Table Tags
    • CSS
      • CSS Basic
      • CSS Practice
Powered by GitBook
On this page
  • 직렬화(Serialization): Java 객체를 JSON 형식으로 변환합니다.
  • 역직렬화(Deserialization):JSON 데이터를 Java 객체로 변환합니다.
  • 역질력 기본 생성자 필수
  • Annotation
  • @JsonProperty
  • @JsonInclude
  • @JsonFormat
  • @JsonIgnore
  • @JsonAutoDetect
  • @JsonAlias
  • @JsonIgnoreProperties
  • @JsonRawValue
  • @JsonManagedReference와 @JsonBackReference
  • @JsonGetter
  • @JsonSetter
  • @JsonAnyGetter
  • @JsonAnySetter
  • @JsonTypeId
  • @JsonTypeName
  • Reference

Was this helpful?

  1. 매일매일 조금씩 성장하기
  2. Java

Jackson de/serialize

Jackson 역직렬

Jackson은 Java 객체와 JSON 데이터 간의 직렬화 및 역직렬화를 수행하는 데 사용되는 강력한 라이브러리입니다. ObjectMapper를 사용하여 객체를 JSON으로 직렬화하고, JSON을 객체로 역직렬화할 수 있습니다

직렬화(Serialization): Java 객체를 JSON 형식으로 변환합니다.

  • ObjectMapper 클래스를 사용하여 Java 객체를 JSON 문자열로 직렬화할 수 있습니다.

  • writeValue() 메서드를 사용하여 Java 객체를 JSON으로 변환할 수 있습니다.

  • writeValueAsString() 메서드를 사용하여 Java 객체를 JSON 문자열로 변환할 수 있습니다.

역직렬화(Deserialization):JSON 데이터를 Java 객체로 변환합니다.

  • ObjectMapper 클래스를 사용하여 JSON 문자열을 Java 객체로 역직렬화할 수 있습니다.

  • readValue() 메서드를 사용하여 JSON 문자열을 Java 객체로 변환할 수 있습니다.

  • readValue() 메서드는 다양한 입력 형식을 지원하며, JSON 문자열, 파일, URL, InputStream 등을 처리할 수 있습니다.

역질력 기본 생성자 필수

기본적으로 Jackson은 객체를 역직렬화할 때, 기본 생성자를 사용하여 객체를 인스턴스화합니다. 기본 생성자가 없는 경우, Jackson은 객체를 역직렬화할 수 없으며, JsonMappingException 예외가 발생합니다.

기본 생성자의 필요성은 역직렬화에만 해당합니다. 직렬화 시에는 기본 생성자가 반드시 필요하지는 않습니다. 직렬화는 Java 객체를 JSON 형식으로 변환하는 과정이므로, 객체의 상태를 기록하고 필드 값을 JSON으로 변환합니다. 이때 생성자는 호출되지 않습니다.

하지만 역직렬화 시, JSON 데이터를 Java 객체로 변환할 때, 해당 클래스의 기본 생성자가 필요합니다. 역직렬화 과정에서 Jackson은 JSON 데이터를 기반으로 객체를 인스턴스화하고, 필드 값을 설정합니다. 기본 생성자가 없는 경우, Jackson은 객체를 인스턴스화할 수 없으며, 역직렬화 시에 예외가 발생합니다.

따라서 Jackson을 사용하여 역직렬화를 수행할 때는 해당 클래스에 기본 생성자가 필요합니다. 직렬화 시에는 기본 생성자가 없어도 문제가 없습니다.

Annotation

@JsonProperty

필드 또는 메서드에 사용되며, JSON 데이터와 매핑되는 속성의 이름을 지정합니다.

@JsonInclude

직렬화 시 포함할 필드를 지정

@JsonFormat

어노테이션을 사용하여 날짜/시간 형식을 지정할 수 있습니다.

@JsonIgnore

필드 또는 메서드에 사용되며, JSON 직렬화 및 역직렬화에서 해당 속성을 무시합니다.

@JsonAutoDetect

필드나 메서드의 접근 제한자에 따라 직렬화/역직렬화할 대상을 자동으로 감지합니다.

@JsonAlias

JSON 데이터에서 여러 개의 속성 이름을 동일한 필드에 매핑할 수 있도록 지정합니다.

@JsonIgnoreProperties

JSON 직렬화/역직렬화 시 무시할 속성들을 지정합니다.

@JsonRawValue

JSON 데이터를 직접 문자열로 설정합니다.

@JsonManagedReference와 @JsonBackReference

양방향 관계의 객체에서 순환 참조를 해결합니다.

@JsonGetter

메서드에 사용되며, 해당 메서드가 직렬화 시에 속성의 값을 가져오는 메서드임을 나타냅니다.

@JsonSetter

메서드에 사용되며, 해당 메서드가 역직렬화 시에 속성의 값을 설정하는 메서드임을 나타냅니다.

@JsonAnyGetter

Map 형태의 필드에 사용되며, 해당 필드의 모든 속성을 JSON 객체로 직렬화할 때 사용됩니다.

@JsonAnySetter

Map 형태의 메서드에 사용되며, 역직렬화 시에 속성을 Map에 동적으로 추가할 때 사용됩니다.

@JsonTypeId

역직렬화 시에 객체의 타입을 지정하는 데 사용됩니다.

@JsonTypeName

객체의 타입에 해당하는 값을 지정하는 데 사용됩니다.

Reference

Last updated 1 year ago

Was this helpful?

step1 👶🏻 by daehwan2yo · Pull Request #183 · next-step/atdd-subway-favoriteGitHub
Logo