[๊ณต๊ณต๋ฐ์ดํฐ] @JsonProperty ํ์ฉ๋ฒ
์ต๊ทผ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์์ ์ ๊ณตํ๋ ใ์ํ์์์ฑ๋ถDB์ ๋ณด APIใ๋ฅผ ์ฐ๋ํด ํ์ฉํด ๋ณด๊ณ ์๋ค.
๐ฉ Postman ์์ฒญ ํ ์คํธ
๋จผ์ ํฌ์คํธ๋งจ์ผ๋ก API ์์ฒญ์ ๋ณด๋ด๋ดค๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐ์ ์๋ต์ด ๋ค์๊ณผ ๊ฐ์๋ค.

์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๊ณ ์ฒ์ ๋ ์๊ฐ์ ์ด๋ฌ๋ค.
"amtNum1": "75.00", "amtNum2": "83.70"......? ์ฅ?
ํ๋๋ช ์ด ์ ํํ ์ด๋ค ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋์ง ๋ฐ๋ก ์ดํดํ ์ ์์๋ค.
์๋ง XML ์๋ณธ ๋ฐ์ดํฐ์ ๋ค์ด๋ฐ์ ๊ทธ๋๋ก JSON์ผ๋ก ๋ณํํ๋ฉด์ ์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋์จ ๊ฒ ๊ฐ๋ค.
ํ๋ก์ ํธ๋ฅผ ์งํํ ๋, ์ด๋ ๊ฒ ์๋ฏธ๊ฐ ๋ชจํธํ ํ๋๋ช ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ ์ต์ข ์ฌ์ฉ์์๊ฒ ๊ทธ๋๋ก ์ ๋ฌํ๋ ๊ฒ์ ์ข์ง ์์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ฐฐ์ ๋ค.
๊ทธ๋์ ์ด๋ป๊ฒ ํ๋ฉด ์ข์๊น ๊ณ ๋ฏผํ๋ค๊ฐ, Spring์์ ์ ๊ณตํ๋ Jackson์ @JsonProperty๋ฅผ ์ฌ์ฉํ๋ฉด key๋ฅผ ๋งคํ ์ํฌ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
@JsonProperty๋?
@JsonProperty๋ Java ๊ฐ์ฒด ํ๋์ JSON ํค ๊ฐ์ ์๋ก ๋ค๋ฅด๊ฒ ์ง์ ํ ๋ ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์ ์ด๋ค. ์ฆ, DTO ํด๋์ค ๋ด๋ถ ํ๋๋ช ๊ณผ JSON ์๋ต์ผ๋ก ๋ด๋ ค๊ฐ๋ ํ๋๋ช ์ ๋ค๋ฅด๊ฒ ์ค์ ํ ์ ์๋ค.
@JsonProperty("์ํ๋_ํ๋๋ช
")
private String ์ค์ ํ๋๋ช
;
์ด๋ ๊ฒ ์ ์ธํ๋ฉด, Java DTO ๋ด๋ถ์์๋ ์ค์ ํ๋๋ช ์ ๊ทธ๋๋ก ์ฌ์ฉํ์ง๋ง,
JSON ์๋ต์์๋ "์ํ๋_ํ๋๋ช "์ผ๋ก ๋ํ๋๋ค.
ํ์ฌ DTO ํด๋์ค์ @JsonProperty์ ์ ์ฉํด ๋ณด์๋ค.
@Getter
@NoArgsConstructor
public class FoodItemResponseDto {
private String foodCd;
private String foodNmKr;
private String dbGrpNm;
private String dbClassNm;
private String servingSize;
private String amtNum1;
private String amtNum2;
public FoodItemResponseDto(String foodCd, String foodNmKr,
String dbGrpNm, String dbClassNm,
String servingSize, String amtNum1,
String amtNum2) {
this.foodCd = foodCd;
this.foodNmKr = foodNmKr;
this.dbGrpNm = dbGrpNm;
this.dbClassNm = dbClassNm;
this.servingSize = servingSize;
this.amtNum1 = amtNum1;
this.amtNum2 = amtNum2;
}
}
@Getter
@NoArgsConstructor
public class FoodItemResponseDto {
@JsonProperty("์ํ์ฝ๋")
private String foodCd;
@JsonProperty("์ํ๋ช
")
private String foodNmKr;
@JsonProperty("์ํ ๊ทธ๋ฃน๋ช
")
private String dbGrpNm;
@JsonProperty("์ํ ๋ถ๋ฅ๋ช
")
private String dbClassNm;
@JsonProperty("1ํ ์ ๊ณต๋")
private String servingSize;
@JsonProperty("์๋์ง(Kcal)")
private String amtNum1;
@JsonProperty("ํ์ํ๋ฌผ(g)")
private String amtNum2;
์ ์ฉ ํ ๋ค์ API ์์ฒญ์ ๋ณด๋๋๋, ๊ฒฐ๊ณผ๋!!
๐ฉ ์๋ต ๊ฒฐ๊ณผ ํ์ธ

์ด์ API ์๋ต ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์ ํํ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋์ง ํ๋์ ์ ์ ์๊ฒ ๋์๋ค.
๐ฉ๐ป๐ป ๋ง๋ฌด๋ฆฌ
@JsonProperty ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด์ ํ์ ๊ณผ ์ ์ง๋ณด์ ๊ด์ ์์ ํฐ ์ฅ์ ์ด ์๋ค๋ ๊ฑธ ์๊ฒ ๋์๋ค.
ํนํ ๊ณต๊ณต๋ฐ์ดํฐ ํฌํธ์ด๋ ์ธ๋ถ API๋ฅผ ์ฐ๋ํ ๋๋ ์ด๋ฐ ๋ค์ด๋ฐ ์ด์๊ฐ ์ข ์ข ๋ฐ์ํ๊ธฐ ๋๋ฌธ์, ๋์ฑ ์ ์ฉํ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค.
์์ผ๋ก๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ป์ ๊ฐ๋จํ์ง๋ง ์ ์ฉํ ๊ฒฝํ๋ค์ ๊พธ์คํ ๊ธฐ๋กํด๋ด์ผ๊ฒ ๋ค!
