[Spring] Note3. @JsonProperty

2026. 2. 28. 13:22·🌱 Spring Framework/Spring Framework
반응형

@JsonProperty는 Entity를 Json형태로 직렬화하는 경우 속성의 이름을 설정할 수 있도록 도와주는 어노테이션이다. 

이를 통해 백엔드와 프론트엔드간 엔터티 필드명 불일치를 해결할 수 있다. 

예시로 아래와 같은 Board Entity 파일이 백엔드에 정의되어 있다고 가정해 보자. 

public class Board extends BaseTimeEntity {

    ...
    @Column(name = "post_view", nullable = false)
    private Integer postView = 0;

    @Column(name = "pinned", nullable = false)
    private Boolean pinned = false;

    @Column(length = 255)
    private String filename;
    ...
    
}

 

이를 Json으로 직렬화하면 아래와 같이 변환될 것이다. 

{"post_view":0, "pinned": false, "filename": ""}

 

하지만 만약 프론트단에서 Board 엔터티에 대한 인터페이스를 아래와 같이 정의했다면

views 필드에 대한 필드명 불일치 문제가 발생한다. 

작은 프로젝트라면 큰 문제가 되지 않겠지만, 어느정도 규모가 있는 프로젝트에서 views와 관련된 모든 코드를 고치는 것은 사이드 이펙트가 굉장히 커진다. 

export interface Board {
  ...
  views: number;
  pinned: boolean;
  filename?: string | null;
  ...
}

 

따라서 이 필드와 관련 코드를 모두 수정하는 대신 @JsonProperty 어노테이션으로 필드명 위에 "직렬화 시 속성의 이름을 명시"해주면 별도로 코드를 수정하지 않아도 된다. 

public class Board extends BaseTimeEntity {

    ...
    @JsonProperty("views") // <-- 
    @Column(name = "post_view", nullable = false)
    private Integer postView = 0;
    
    @Column(name = "pinned", nullable = false)
    private Boolean pinned = false;

    @Column(length = 255)
    private String filename;
    ...
    
}
{"view":0, "pinned": false, "filename": ""} 
// JsonProperty 어노테이션에 따라서 post_view가 아닌 view로 직렬화
반응형
저작자표시 비영리 변경금지 (새창열림)

'🌱 Spring Framework > Spring Framework' 카테고리의 다른 글

[DB] Mac H2 Database 연동 및 설치 방법 정리  (1) 2024.03.29
[Spring] 정적 페이지 & MVC 렌더링 방식  (0) 2024.03.24
'🌱 Spring Framework/Spring Framework' 카테고리의 다른 글
  • [DB] Mac H2 Database 연동 및 설치 방법 정리
  • [Spring] 정적 페이지 & MVC 렌더링 방식
novs
novs
https://github.com/novvvv
    반응형
  • novs
    nov.Zip
    novs
  • 전체
    오늘
    어제
    • All (380)
      • Project (2)
        • Rag Blog (2)
      • 🌱 Spring Framework (27)
        • Java Fundamental (13)
        • SpringSecurity (1)
        • Multi Thread Programming (3)
        • Spring Framework (3)
        • JPA (4)
      • 🔓 Security (1)
      • Cloud (2)
        • Docker (1)
        • AWS (1)
      • Mobile Development (0)
      • dev (7)
        • Git (2)
        • React (2)
        • Android (1)
        • Computer Science (2)
      • Algorithm (29)
        • PS With C++ (8)
        • Algorithm (2)
        • BOJ (16)
        • AtCoder (3)
      • Archive (312)
        • 동아리 사이트 개발일지 (3)
        • 카페 주문 시스템 (3)
        • UIKit (2)
        • Swift Language (3)
        • PS With Swift (2)
        • Next.js (3)
        • React (2)
        • Git (1)
        • Linux (3)
        • Vue.js (2)
        • Flutter (11)
        • ...2022 (34)
        • ...2024 (2)
        • C# (14)
        • C&C++ (47)
        • GameDevelop (19)
        • WEB (32)
        • CS (7)
        • Algorithm (13)
        • ProblemSolving (105)
        • Daily (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    그리디
    문제풀이
    C++문법
    유니티
    프로그래머스
    다이나믹프로그래밍
    STL
    c#
    C++
    C언어
    자바스크립트
    백준
    소스코드
    스택
    dp
    알고리즘
    C
    BOJ
    javascript
    js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
novs
[Spring] Note3. @JsonProperty
상단으로

티스토리툴바