CS
  • CS-Study
  • database
    • B-Tree와 B+Tree
    • DB JOIN
    • DB Lock
    • DB 트래픽
    • DBCP (DB Connection Pool)
    • Flyway
    • Message Broker
    • MySQL InnoDB 스토리지 엔진
    • MySQL 엔진 아키텍처
    • RDB와 NoSQL
    • Redis
    • SQL Injection
    • 스키마 (Schema)
    • Table Scan과 Index Scan
    • Apache Kafka
    • Key
    • 뷰 (View)
    • 인덱스
    • 정규화
    • RDBMS, NoSQL의 클러스터링/리플리케이션 방식
    • 트랜잭션(Transaction)
    • 트랜잭션의 격리성(Transaction Isolation)
    • 프로시저와 트리거
    • DB 정규화 (Normalization)
  • etc
    • MSA
    • REST, REST API, RESTful
    • SOLID 원칙
    • TDD (Test-Driven Development)
    • 서버리스
    • 컨테이너와 도커
  • java
    • Collections
    • Garbage Collection
    • Generic
    • JDBC
    • Java Virtual Machine(JVM)
    • Java Thread
    • Java8 vs Java11 vs Java17
    • 객체지향 프로그래밍 OOP (Object Oriented Programing)
    • Optional
    • RxJava(Reactive Programming)
    • 문자열(String & StringBuffer & StringBuilder)
    • Synchronized
    • Virtual Thread
    • Wrapper Class
    • Equals()와 Hashcode()
    • final
    • Jackson 라이브러리
    • 리플렉션(Reflection)
    • static class와 static method
    • 스트림(Stream)과 람다(Lambda)
    • 스프링 프레임워크에서 사용되는 디자인 패턴
    • 예외처리(Exception)
    • Java Annotation
    • 추상클래스와 인터페이스
  • network
    • 3-way handshake
    • 4-way Handshake
    • DHCP(Dynamic Host Configuration Protocol)
    • DMZ(DeMilitarized Zone)
    • DNS(Domain Name System)
    • HTTP Method
    • HTTP 버전 비교
    • HTTP status code
    • HTTP
    • IP Address
    • Mutiplexing & Demultiplexing
    • OSI 7계층
    • SOP, CORS
    • TCP와 UDP
    • XSS와 CSRF
    • gRPC
    • Stateless와 Connectionless
    • 라우터 Router
    • 로드밸런서(Load Balancer)
    • 브라우저에 URL입력시 네트워크 상 일어나는 일
    • 서브넷 마스크, 게이트웨이
    • 웹 소켓과 소켓 통신
    • 쿠키(Cookie)와 세션(Session)
  • operating-system
    • IPC (Inter Process Communication)
    • 인터럽트
    • TLB
    • 스레싱 Thrashing
    • Thread Pool, Fork-Join
    • Thread Safe
    • 프로세스
    • 가상 메모리
    • 데드락 (DeadLock, 교착 상태)
    • 동기/비동기 & 블로킹/논블록킹
    • 동기화(Synchronization)
    • 메모리 할당과 단편화
    • 뮤텍스와 세마포어, 모니터
    • 세그먼테이션과 페이징
    • 운영체제
    • 캐시 메모리
    • Context switching(문맥 교환)
    • 컴파일
    • 파일 시스템
    • 페이지 교체 알고리즘(Page Replacement Algorithm)
    • 프로세서 스케줄링 알고리즘
    • 프로세스 주소 공간
  • spring
    • @Transactional
    • AOP(Aspect-Oriented Programming)
    • DTO, DAO, VO, Entity
    • DispatcherServlet
    • Hibernate, JPA, Spring Data JPA
    • Ioc와 DI
    • JPA 연관관계 맵핑
    • N+1 Problem
    • ORM
    • Persistence Context
    • SQL Mapper vs ORM vs QueryBuilder
    • Servlet Filter와 Spring Interceptor
    • Servlet
    • Spring MVC와 Spring Boot
    • Tomcat
    • WebFlux
Powered by GitBook
On this page
  • 주요 기능
  • 구성 요소
  • 사용 예제
  1. java

Jackson 라이브러리

  • Java에서 많이 사용되는 JSON 데이터 처리 라이브러리

  • JSON 데이터를 직렬화하거나 역직렬화하는 기능을 제공

주요 기능

  1. 데이터 바인딩(Data Binding)

  • 객체-JSON 바인딩: JSON 문자열을 Java 객체로 변환하고(Java object deserialization), Java 객체를 JSON 문자열로 변환(Java object serialization)할 수 있습니다.

  • 스트림 API: 대용량 JSON 데이터를 스트림 방식으로 효율적으로 처리할 수 있습니다.

  1. 어노테이션 기반 구성

  • 다양한 어노테이션을 통해 직렬화 및 역직렬화 과정을 세밀하게 제어할 수 있습니다.

  • @JsonIgnore : 특정 필드를 직렬화 및 역직렬화 과정에서 무시하도록 지정합니다.

public  class Person {
   private String name;

   @JsonIgnore
   private int age;

}
  • @JsonInclude : 조건에 따라 필드를 포함하거나 생략할 수 있습니다.

public  class Person {
	private String name;
	
	@JsonInclude(JsonInclude.Include.NON_NULL)
	private Integer age;

}
  • @JsonFormat : 날짜 및 시간 형식 등을 지정할 때 사용됩니다.

public  class Event {
	private String name;
  
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	private Date eventDate;
}
  • @JsonValue : 단일 값 객체를 직렬화할 때 사용됩니다. 주로 값 객체(value object)나 열거형(enum)에 사용됩니다.

public enum Status {
	SUCCESS("success"),
	FAILURE("failure");
	
	private String value;

	Status(String value) {
		this.value = value;
	}

@JsonValue
public String getValue() {
	return value;
	}
}
  • @JsonIgnoreProperties : 특정 속성들을 무시하도록 클래스 레벨에서 설정할 수 있습니다.

@JsonIgnoreProperties({"age", "address"})
public  class Person {
	private String name;
	private int age;
	private String address;
}
  1. 확장성

  • 사용자 정의 직렬화기 및 역직렬화기를 작성하여 특정 객체의 JSON 변환 방식을 정의할 수 있습니다.

  • 다양한 데이터 형식(CSV, XML 등)이나 서드파티 라이브러리와의 통합이 가능합니다.

구성 요소

  1. ObjectMapper

  • Jackson의 핵심 클래스 중 하나로, JSON과 Java 객체 간의 변환 작업을 수행합니다.

  • 기본적인 직렬화 및 역직렬화 설정을 관리하고 다양한 설정 옵션을 제공합니다.

  1. JsonParser와 JsonGenerator

  • JSON 데이터를 스트림 방식으로 처리합니다. JsonParser는 JSON 데이터를 읽어들이고, JsonGenerator는 JSON 데이터를 생성합니다.

  1. Tree Model

  • JsonNode 클래스를 사용하여 JSON 데이터를 트리 구조로 표현합니다.

  • 트리 모델을 사용하면 JSON 데이터의 특정 부분을 쉽게 탐색하고 조작할 수 있습니다.

사용 예제

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonExample {

	public static void main(String[] args) {

		ObjectMapper objectMapper = new ObjectMapper();

		// JSON 문자열을 Java 객체로 역직렬화

		String jsonString = "{\"name\":\"John\", \"age\":30}";

		try {

			Person person = objectMapper.readValue(jsonString, Person.class);

			System.out.println(person.getName()); // John

		} catch (Exception e) {

			e.printStackTrace();

		}

		// Java 객체를 JSON 문자열로 직렬화

		Person person = new Person("Jane", 25);

		try {

			String json = objectMapper.writeValueAsString(person);

			System.out.println(json); // {"name":"Jane","age":25}
	
		} catch (Exception e) {

			e.printStackTrace();

		}

	}

}

  

class Person {
	private String name;
	private int age;
}
PreviousfinalNext리플렉션(Reflection)

Last updated 10 months ago