JAVA
[Spring] Json에 포함되는 필드
현재의 현제
2023. 4. 14. 11:16
package com.example.domain.domain;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@Getter @Setter
@Table(name = "member")
@NoArgsConstructor
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private int age;
private LocalDateTime createdAt;
public Member(int age) {
this.age = age;
this.createdAt = LocalDateTime.now();
}
// 비지니스 로직
public double calculateAverage() {
double average = 0.0;
if ((this.age >= 55) && (this.age < 65)) {
average = 12.37;
} else if ((this.age >= 65) && (this.age < 75)) {
average = 11.17;
} else if ((this.age >= 75) && (this.age < 85)) {
average = 10.50;
} else if (this.age >= 85) {
average = 6.64;
}
return average;
}
}
- 이렇게 되어있으면 객체에는 @getter 영향을 받는 id, age, createdAt이 포함된다.
[
{
"id": 3,
"question": {
"id": 2,
"imageUrl": "url.com",
"answer": "정답"
},
"member": {
"id": 1,
"age": 66,
"createdAt": "2023-04-13T22:46:34.565342"
},
"answerStatus": "WAITING",
"audio": "audio.com"
}
]
하지만 메소드도 get 이름을 붙이면 getter 메소드로 분류되어서 Json에 자동으로 추가된다.
public double getAverage() {
double average = 0.0;
if ((this.age >= 55) && (this.age < 65)) {
average = 12.37;
} else if ((this.age >= 65) && (this.age < 75)) {
average = 11.17;
} else if ((this.age >= 75) && (this.age < 85)) {
average = 10.50;
} else if (this.age >= 85) {
average = 6.64;
}
return average;
}
결과
[
{
"id": 3,
"question": {
"id": 2,
"imageUrl": "url.com",
"answer": "정답"
},
"member": {
"id": 1,
"age": 66,
"createdAt": "2023-04-13T22:46:34.565342",
"average": 11.17
},
"answerStatus": "WAITING",
"audio": "audio.com"
}
]
- 자동으로 nested serialize도 해주고,, 뭐지 스프링 생각보다 간편할지도
- 그러니깐 결론적으로 Json에 포함 되는 것은 getter가 있을 때 포함된다.