[rest api 프로젝트 구축] - CUSTOM한 JsonSerializer 만들기

geun kim·2023년 3월 28일
0

REST API 구축

목록 보기
19/20

CUSTOM한 JsonSerializer 만들기

결론 @JsonSerialize(using = AccountSerializer.class)를 선언해서 사용
실제 JSON으로 Serialization 할 경우 Account 정보의 id 정보만 포함된다.

Account class

  @Entity
  @Getter @Setter @EqualsAndHashCode(of = "id")
  @Builder @NoArgsConstructor @AllArgsConstructor
  public class Account {

      @Id @GeneratedValue
      private Integer id;

      @Column(unique = true)
      private String email;

      private String password;

      @ElementCollection(fetch = FetchType.EAGER)
      @Enumerated(EnumType.STRING)
      private Set<AccountRole> roles;
  }

JsonSerializer class

public class AccountSerializer extends JsonSerializer<Account> {

    @Override
    public void serialize(Account account, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        gen.writeNumberField("managerId", account.getId());
        gen.writeEndObject();
    }
}

JsonSerializer class 활용
@JsonSerialize(using = AccountSerializer.class) 선언해서 사용
실제 JSON으로 Serialization 할 경우 Account 정보의 id 정보만 포함된다.

@Builder @AllArgsConstructor @NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of ={ "id" ,"name"})
@Entity
public class Event {

        	@ManyToOne
            @JsonSerialize(using = AccountSerializer.class)
            private Account manager;
            
}            
profile
Devops Load Map

0개의 댓글