Java Object Mapper & Type Casting

2023. 4. 2. 09:03·📘 Backend/Java
목차
  1. 📘 ObjectMapper
  2. Serialization
  3. Deserialization
  4. 계층 형태의 복잡한 JSon Deserialization
  5. 📘 Type Casting
  6. 업 캐스팅
  7. 다운 캐스팅

📘 ObjectMapper

Jackson 라이브러리의 클래스


JSON - > Java 객체로 Deserialization
Java 객체 -> JSON으로 Serialization
ObjectMapper는 생성 비용이 비싸기 때문에 Bean & Static으로 처리하는걸 권장


Serialization

// Object Mapper를 이용한 직렬화

try {
    Question question = Question.builder()
            .questionId(1L)
            .title("제목")
            .content("내용")
            .build();

    objectMapper.writeValue(new File("src/question.json"), question);
} catch (IOException e) {
    e.printStackTrace();
}

Deserialization

// Object Mapper를 이용한 역직렬화

try {
    LoginDto loginDto = objectMapper.readValue(request.getInputStream(), LoginDto.class);
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

계층 형태의 복잡한 JSon Deserialization

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

try {
    PersonDto personDto = objectMapper.readValue(complicatedJson, PersonDto.class);
    System.out.println(personDto.getName());
    System.out.println(personDto.getContact().getPhoneNumber());
    System.out.println(personDto.getJob().getWorkplace().getName());
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

📘 Type Casting

자바에는 두가지 유형의 캐스팅이 있다.


업 캐스팅

  • 작은 타입 -> 큰 타입
  • byte - short - char - int - long - float - double

다운 캐스팅

  • 큰 타입 -> 작은 타입
  • double - float - long - int - char - short - byte

업 캐스팅

작은 타입을 큰 타입으로 캐스팅할때는 자동으로 타입 변환이 된다.

public class Main {
    publuc static void main(String[] args) {
        int num = 9;
        double upNum = num; // 자동 타입 변환

        System.out.println(num); // 9
        System.out.println(upNum); // 9.0
    }
}

다운 캐스팅

큰 타입을 작은 타입으로 캐스팅할때는 수동으로 타입 변환을 해줘야 한다.

public class Main {
    public static void main(String[] args) {
        double upNum = 9.78d;
        int num = (int) upNum; // 수동 타입 변환

        System.out.println(upNum); // 9.78
        System.out.println(num); // 9
    }
}
저작자표시 (새창열림)

'📘 Backend > Java' 카테고리의 다른 글

Java Thread  (0) 2023.04.02
Java GC & Equality & Override/Overload  (0) 2023.04.02
Java Stream  (0) 2023.04.02
Java Lambda Expression  (0) 2023.04.01
Java Annotation  (0) 2023.04.01
  1. 📘 ObjectMapper
  2. Serialization
  3. Deserialization
  4. 계층 형태의 복잡한 JSon Deserialization
  5. 📘 Type Casting
  6. 업 캐스팅
  7. 다운 캐스팅
'📘 Backend/Java' 카테고리의 다른 글
  • Java Thread
  • Java GC & Equality & Override/Overload
  • Java Stream
  • Java Lambda Expression
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      React #Markdown
      Lock #Thread #Concurrency
      GStreamer #Pipeline
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Java Object Mapper & Type Casting
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.