ํด๋ผ์ด์ธํธ์ ์ฐ๋ ๊ท๊ฒฉ์ ์ ์ํ๋ฉฐ, JSON ํ์์ ๋ณ๊ฒฝํ๊ฒ ๋์์ต๋๋ค.
์๋ ์ฌ์ฉํ๋ ์ฐ๋ ๋ฐฉ์์ ์นด๋ฉ ์ผ์ด์ค (Camel Case) ๋ฐฉ์์ด์๋๋ฐ,
์ฐ๋์ ์์ด ์ต๋ํ ๋น ๋ฅด๊ฒ ์๋น์ค๋ฅผ ํ๊ธฐ ์ํด์ ๋ค ์๋ฌธ์๋ก ๋ณ๊ฒฝํด๋ฌ๋ผ๋ ์๊ตฌ์ฌํญ์ด ์์ด์ @JsonProperty๋ฅผ ์ฌ์ฉํด์ ๋ณ๊ฒฝํ์ต๋๋ค.
๊ธฐ์กด์๋ REST API ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ @RequestBody๋ฅผ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ๊ณ ์์์ด์ ๋ณ์ ์ด๋ฆ์ ๋ฐ๊พธ๋๊ฑด ๋นํจ์จ์ ์ด์๋ค ๐ฆ
๐ JSON ๋ช ๋ช ๊ท์น 3๊ฐ์ง
ํ์ค์ ์๋์ง๋ง ์๋์ 3๊ฐ์ง ์คํ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค.
- Pascal
- camelCase
- snake_case
๋ง์ฝ ๋ด ์ด๋ฆ์ ํํํ๊ธฐ ์ํ ๋ค์ด๋ฐ์ ํ๊ณ ์๋ค๋ฉด
// Pascal
MyName
// camelCase
myName
// snake_case
my_name
์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์๋ต๋๋ค.
์๋ฒ/ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ๋ JSON ํ์์ด ๋ค๋ฅด๋ค๋ฉด ์ฒ๋ฆฌํ๊ณ ์ํ๋ ๋ฐ์ดํฐ์ Key๊ฐ ๋ฌ๋ผ์ง ์ ์๊ธฐ ๋๋ฌธ์
@JsonProperty๋ @JsonNaming๋ฅผ ์ฌ์ฉํ์ฌ Key ๋ค์ด๋ฐ ํ์๋ง ๋ฐ๊ฟ์ฃผ๋๊ฒ ๋งค์ฐ ํจ์จ์ ์ด๋ผ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค
์๋์ ์์์ฒ๋ผ ์ค๋ JSON body๊ฐ ์๋ค๊ณ ๊ฐ์ ์ ํด๋ด ์๋ค.
{
"my_name": "name",
"my_phone": "010-1234-5678"
}
์ ํ์์ ๋ง์ถฐ์ ์๋์ฒ๋ผ ๋ณ์๋ฅผ ์ ์ธํด์ค ์ ์์ต๋๋ค.
// ๋ณ์ ์์ฑ ๊ท์น์ ๊ฐ๊ฒ ํด๋ ๋๊ณ
@Data
public class JsonExample {
private String my_name;
private String my_phone;
}
// @JsonProperty ํ์์ผ๋ก ํด๋ ๋ฉ๋๋ค
@Data
public class JsonExample {
@JsonProperty("my_name") private String myName;
@JsonProperty("my_phone") private String myPhone;
}
// @JsonNaming์ ์ฌ์ฉํด๋ ๋ฉ๋๋ค
@Data
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class JsonExample {
private String myName;
private String myPhone;
}
์ด ํ๋กํผํฐ๋ ๋ณ์ ์ผ๋ถ์ ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์์ ์์์ฒ๋ผ ๋๋ค ๊ฐ์ ๋ค์ด๋ฐ ๊ท์น์ผ๋ก ์จ๋ค๋ฉด @JsonNaming์ผ๋ก ํด์ฃผ๋๊ฒ ๋ ํธํ ๋ฏ ํ์ง๋ง โ
๊ฐํน ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
{
"myName": "name",
"my_phone": "010-1234-5678",
"MyHome": "์์ธ์ ์ด๋๊ฐ"
}
์ด๋ด ๋๋ @JsonProperty๋ก ๋ณ์๋ง๋ค ๋ค์ด๋ฐ์ ๋ง์ถฐ์ ์ ์ธํด์ฃผ๋๊ฒ ์ข์ต๋๋ค.
@Data
public class JsonExample {
@JsonProperty("myName") private String myName;
@JsonProperty("my_phone") private String myPhone;
@JsonProperty("MyHome") private String myHome;
}
๊ทธ๋ฌ๋ฉด ๋ด ์ฝ๋์์ ์ฌ์ฉํ๋ ๋ณ์ ํ์์ ์ผ์ ํ ํํ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค ๐
์ฌ์ค ๋จ์ํ ์ด๋ ธํ ์ด์ ๋ง ์ฌ์ฉํด์ ํ๋ฉด ๋๋๊ฑฐ ์๋? ํ ์ ์์ง๋ง ์จ์์ด๋ ๋๋ฌด ์ฑ๊ธฐ;
'๐ Java&Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Error) java: class, interface, or enum expected ํด๊ฒฐ (0) | 2023.06.26 |
---|---|
๐ธ startsWith()/endWith() ๋ฌธ์์ด์ ์์๊ณผ ๋ (0) | 2023.04.04 |
Java์ Hash ์๊ณ ๋ฆฌ์ฆ MessageDigest (0) | 2023.03.16 |
HTTP Query Parameter์์ Arrary List ์ฌ์ฉ (0) | 2023.02.01 |
Spring Cron Expression (0) | 2023.01.25 |