[JAVA] @JsonIgnore (Swagger 테스트시 무시)및 @JsonProperty 어노테이션 사용방법 (Jackson 어노테이션)
Swagger로 Api를 테스트할 때 dto(VO) 클래스에 선언된 변수들 중에 임시로 사용하는 변수가 있거나 혹은 입력인자로 사용되지 않는 변수가 있다면 @JsonIgnore 어노테이션을 선언한 변수 위에 추가해주면 된다.
Jackson 어노테이션
@JsonIgnore
-특정 필드를 JSON 직렬화 및 역직렬화에서 무시하도록 할때 사용. 스웨거 테스트시에도 해당변수는 보이지않게된다.
@JsonProperty
-특정 필드의 JSON 속성 이름을 명시적으로 지정하는 데 사용. 테이블 컬럼중에 START_T_NO, A_DO 와 같이 한자리의 영문자가 있을때 카멜타입으로 변환 후 넥사크로 UI에서 해당 데이터를 받아오지 못할때 사용하면 해결할 수 있다.
@JsonFormat
-날짜나 시간 형식을 지정하는 데 사용.
UserDto 클래스
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Data
public class UserDto {
@JsonProperty(“firstName”)
public String firstName;
@JsonProperty(“lastName”)
public String lastName;
@JsonProperty(“dateOfBirth”)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = “yyyy-MM-dd HH:mm:ss”)
public Date dateOfBirth;
@JsonIgnore
public String password;
}
TEST 클래스
import java.util.Date;
import com.test.UserDto;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TEST {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
UserDto user = new UserDto();
user.setFirstName(“아”);
user.setLastName(“이유”);
user.setDateOfBirth(new Date());
user.setPassword(“test1234”);
// JSON 직렬화
String jsonString = mapper.writeValueAsString(user);
System.out.println(“Serialized JSON: ” + jsonString);
// JSON 역직렬화
String inputJson = “{\”firstName\”:\”아\”,\”lastName\”:\”이유\”,\”dateOfBirth\”:\”2024-06-20 13:20:30\”}”;
UserDto deserializedUser = mapper.readValue(inputJson, UserDto.class);
System.out.println(“Deserialized User”);
System.out.println(“First Name: ” + deserializedUser.getFirstName());
System.out.println(“Last Name: ” + deserializedUser.getLastName());
System.out.println(“Date of Birth: ” + deserializedUser.getDateOfBirth());
}
}
UserDto 객체를 JSON 문자열로 변환(직렬화) 후 출력 결과는 다음과 같다.
{“firstName”:”아”,”lastName”:”이유”,”dateOfBirth”:”2024-06-20 13:20:30″}
JSON 역직렬화
JSON 문자열을 UserDto 객체로 변환(역직렬화) 예제
String inputJson = “{\”firstName\”:\”John\”,\”lastName\”:\”Doe\”,\”dateOfBirth\”:\”2024-06-20 13:20:30\”}”;
UserDto deserializedUser = mapper.readValue(inputJson, UserDto.class);