모든 소스는 여기서 확인하실 수 있습니다. Optional을 Jackson을 이용해 Serialize/Deserialize하면 어떻게 될까요? Optional 필드를 가지는 Object 하나의 Optional 필드를 가지는 Name이라는 클래스를 생성하였습니다. package io.lcalmsky.jackson.domain; import lombok.AccessLevel; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Optional; public class BeanWithOptional { @Data @NoArgsConstructor(access = AccessLevel.PROTECTED) public static class..
모든 소스는 여기서 확인하실 수 있습니다. 커스텀 애노테이션 (@JacksonAnnotationInside) @JacksonAnnotationInside 애노테이션을 사용하여 커스텀 애노테이션을 정의할 수 있습니다. package io.lcalmsky.jackson.domain.annotation; import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.lang.annotation.Retention; import java.l..
모든 소스는 여기서 확인하실 수 있습니다. @JsonProperty JSON에서의 속성 이름을 나타냅니다. 필드 변수 또는 getter/setter 메소드에 사용할 수 있습니다. package io.lcalmsky.jackson.domain; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Getter; import lombok.Setter; public class BeanWithJsonProperty { @Getter @Setter @JsonProperty("identity") private int id; private String name; @JsonProperty("nickname") public String getName()..
모든 소스는 여기서 확인하실 수 있습니다. Jackson에서 다형성 처리를 위하여 아래와 같은 애노테이션을 사용합니다. @JsonTypeInfo: 직렬화 시 포함할 타입 정보의 세부 사항을 나타냅니다. @JsonSubTypes: 애노테이션이 달린 타입의 하위 타입을 지정합니다. @JsonTypeName: 애노테이션이 달린 타입의 논리적 이름을 지정합니다. package io.lcalmsky.jackson.domain; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeName; ..
모든 소스는 여기서 확인하실 수 있습니다. @JsonIgnoreProperties @JsonIgnoreProperties는 Jackson이 무시할 속성 또는 속성 리스트를 나타냅니다. 문자열 배열 형식으로 나타낼 수 있습니다. package io.lcalmsky.jackson.domain; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AccessLevel; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor(access = AccessLevel.PROTECTED) @JsonIgnoreProperties("password") pu..
모든 소스는 여기서 확인하실 수 있습니다. @JsonCreator 역 직렬화에 사용되는 생성자나 팩토리를 조정할 수 있습니다. 필요한 대상 엔터티와 정확히 일치하지 않는 일부 JSON을 역 직렬화해야 할 때 유용합니다. 아래와 같은 JSON이 존재하고 { "id": 1, "theName": "beanName" } 대상 엔터티에는 "theName" 필드가 존재하지 않지만 엔터티 자체를 변경하고 싶지 않을 때 생성자에 @JsonCreator주석을 달고 @JsonProperty를 사용하여 해결할 수 있습니다. package io.lcalmsky.jackson.domain; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jac..
모든 소스는 여기서 확인하실 수 있습니다. Jackson Serialization jackson이 제공하는 직렬화(serialization) 애노테이션에 대해 알아봅시다. @JsonAnyGetter Map 필드를 표준 property로 사용할 수 있는 유연성을 제공합니다. package io.lcalmsky.jackson_test.domain; import com.fasterxml.jackson.annotation.JsonAnyGetter; import java.util.HashMap; import java.util.Map; public class ExtendableBean { public String name; private Map properties; public ExtendableBean(Strin..
- Total
- Today
- Yesterday
- JPA
- gRPC
- JSON
- Spring Boot
- Spring Boot Tutorial
- proto3
- spring boot app
- QueryDSL
- Jackson
- 헥사고날 아키텍처
- 스프링 부트 튜토리얼
- leetcode
- 스프링 부트
- 클린 아키텍처
- 스프링 데이터 jpa
- 알고리즘
- intellij
- 함께 자라기
- spring boot jwt
- Spring Data JPA
- Spring Boot JPA
- Java
- spring boot application
- 함께 자라기 후기
- r
- @ManyToOne
- 스프링 부트 애플리케이션
- Linux
- 스프링 부트 회원 가입
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |