Jackson ObjectMapper
Jackson & ObjectMapper
๋จ์ด ๋ปํ์ด๋ฅผ ํด๋ณด๋ฉด,
ObjectMapper
๋ ๊ฐ์ฒด๋ฅผ ๋งคํ(์ฐ๊ฒฐ)ํ๋ค๋ก ๋ณผ ์ ์๊ฒ ๋ค. ๋งคํ์ด ์ ํ์ํ ๊น? ์ง๋ฌธ์ ๋ฐ๊ฟ์, ๋งคํ์ด ํ์ํ ์ํฉ์ ์ด๋ค ์ํฉ์ผ๊น?๋งคํ์ด ํ์ํ ์ํฉ : ๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ์๋ก ํต์ ํด์ผ ํ ์ํฉ์ด ์๋ค๊ณ ํ์. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ๊ฐ์ Tierํน layer๊ฐ ๋ค๋ฅธ ์ํฉ์ด๋ผ๋ฉด ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ฉํ ์ผ์ด ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฐ ์ ์ค์ ํ๋๊ฐ F/E์ B/E๊ฐ์ ํต์ ์ํฉ์ผ ๊ฒ์ด๊ณ . F/E์์ ๋ง์ด ์ฌ์ฉํ๋ ์ธ์ด๋ก๋
Javascript
๊ฐ ์๊ณ , B/E๋Java
๋Python
,PHP
๋ฑ๋ฑ์ด ์์ ๊ฒ์ด๋ค.๊ทธ๋ ๋ค๋ฉด ๊ฒฐ๊ตญ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํ์ ์ ์ธ์ด์ฐจ์ด์ ์ํ ๊ฒ์ผ๊น? ๋ฌผ๋ก ๊ทธ๋ ๊ฒ ๋จ์ ์ง์ ์๋ ์์ ๊ฒ์ด๋ค. ๋ค๋ง ๊ฐ ์ธ์ด๋ณ ์์ฃผ ์ฌ์ฉ๋๊ณ ์ ํธ๋๋ ๋ฐ์ดํฐ ํ์ ์ด ๋ค๋ฅผ ๊ฒ์ด๋ค. ์ธ์ด๋ณ๋ก ์งํฅํ๋ ์ฒ ํ์ด ๋ค๋ฅด๊ณ , ๊ตฌํ๋ ๋ฐฉ์๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์๋ฌดํผ, ์ด๋ฐ ์ํฉ์์ ๋ค์ F/E์ B/E๋ก ๋์๊ฐ์, F/E๋ JS, B/E๋
Java
๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ์.Javascript
์ ๊ฒฝ์ฐ ๊ฐ์ฅ ํํ ์ฌ์ฉํ๋ ๋ฐ์ดํฐํ์ ์ผ๋ก json์ด ์๊ณ , java์์๋ Map์ด๋ ํด๋์ค ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ DTO๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ Jasckson์ Json๊ณผ dto(ํน์ map)๊ฐ์ ๋งคํ์ ๋์์ฃผ๊ฒ ๋๋ค.๊ทธ ์ ์, HTTP ํต์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋์๋ ์ง๋ ฌํ/ ์ญ์ง๋ ฌํ์ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค. ์ด ๋ ์ฌ์ฉ๋๋ ํ์ ์ค์ ํ๋๊ฐ json์ด๊ธฐ๋ ํ๋ค. HTTP๋ฅผ ํตํด์๋ ๊ฒฐ๊ตญ String ๋ฐ์ดํฐ๋ค์ด ์๋ค๊ฐ๋ค ํ ํ ๋ฐ, F/E์์ B/E๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ฒ ๋๋ฉด ๋จ์ String์ธ ๋ฐ์ดํฐ๋ฅผ Java์ ๊ฐ์ฒดํ๋ฅผ ์์ผ์ค์ผ ํ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋๋ก Java์์ ๊ฐ์ฒดํ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ HTTP๋ก ๋ณด๋ด๋ ค๋ฉด Stringํํด์ JSON์ผ๋ก ๋ง๋ค์ด ๋ณด๋ด์ผ ํ ๊ฒ์ด๋ค. ์ด ์์ ์ Jackson์
ObjectMapper
๊ฐ ์์ฃผ ๋ง์ด ๋์์ค๋ค.์๋ฅผ ๋ค์ด Java์์ ํด๋์ค๋ก ์์ฑํ DTO๊ฐ์ฒด๋ฅผ JSON ๊ธฐ๋ฐ์ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋ ค๋ ์์ ์ ์ง์ ํ๋ ค๋ฉด, ๋ถ๊ฐ๋ฅํ ๊ฒ์ ์๋์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ปค์ง์๋ก ํด๋จผ์๋ฌ์ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋ค. double quote ์ง์ฅ์ ๋น ์ ธ์ ํ์ฐ์ ๊ฑฐ๋ฆด ํ๋ฅ ์ด ๋๋ค... ํ์ง๋ง ์ฐ๋ฆฌ์
ObjectMapper
๋ ๊ทธ๊ฒ์ ์๋ํํด์คฌ๋ค(๋๊ตฐ๊ฐ์ ํผ๋์ด๋ฆฐ ๋ ธ๋ ฅ์ ๊ฒฐ๊ณผ์ผ ๊ฒ์ด๋ค.). ๊ทธ๋ฆฌ๊ณ ๋น์ฐํ ๋ฐ๋์ ๊ฒฝ์ฐ๋ก JSON(๋ฌธ์์ด)์ Java์ DTO(๊ฐ์ฒด)๋ก ๋ณํํด์ฃผ๊ธฐ๋ ํ๋ค.์ฌ๊ธฐ๊น์ง๋ง ๋ณด๋๋ผ๋ ๊ต์ฅํ ํ์ฉ์ฑ์ด ๋๊ณ ์ฌ์ฉํ ํ๋ฅ ์ด ๋๊ธฐ ๋๋ฌธ์, Spring Web ์์กด์ฑ์ Jackson์ ํฌํจ์์ผฐ๋ค. Web์ ์ฌ์ฉํ๋ application์ด๋ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ ๊ฒ์ด๋ค. ์๋ฌดํผ Spring web์์กด์ฑ์ ์ถ๊ฐํ๋ค๋ฉด ๋ฐ๋ก Jackson์ ์ถ๊ฐํ ํ์๊ฐ ์์ผ๋ ๊ผญ ๊ธฐ์ตํ์.
์ฐธ๊ณ ๋ก Jackson์ JSON๋ฟ๋ง ์๋๋ผ, XML/YAML/CSV ๋ฑ ๋ค์ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ง์ํ๋ค.
ObjectMapper
ObjectMapper
ObjectMapper
์ ์ญํ ์ ๋ค์ํ๋ฒ ๋งํ์ง๋ง ์ง๋ ฌํ/์ญ์ง๋ ฌํ๋ฅผ ๋๋ ๊ฒ์ด๋ค.์ ์กํ ์ ์๋ ํํ๋ก ์ง๋ ฌํํ๊ณ , ์ ์ก๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ง์ ํํ๋ก ๋ค์ ์ญ์ง๋ ฌํํ์ฌ ๋ณต์ํ๋ ๊ฒ์ด๋ค.
@JsonProperty
@JsonProperty
jackson์ ์ฌ์ฉํด์ layer ๊ฐ ํต์ ์ ํ๋ค๋ณด๋ฉด, json์ ํค๊ฐ์ด ์ ๋งคํ ๋๊ฐ ์๋ค. F/E์์๋ a๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ a๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ณด๋ด์ง๋ง, B/E์์๋ a๋ผ๋ ์ด๋ฆ์ด ์ด๋ฏธ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉ ์ค์ด๊ธฐ ๋๋ฌธ์ aa๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ ๋งคํ์ ํด์ผํ ๋๋ ์์ ๊ฒ์ด๋ค.
์๋๋ฉด B/E์์๋ ๋น์ฆ๋์ค ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๊ฒฝ์ฐ์๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ ์ปฌ๋ผ ๋ช ์ด ๋ง์ ๋ค์ง ์๊ฑฐ๋, ์ปฌ๋ผ๋ช ์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ค.
์์ ๊ฐ์ ๊ฒฝ์ฐ์
@JsonProperty
๊ฐ ์ ์ฉํ๋ค.์๋ก ์ด ๊ธธ์์ง๋ง ๊ธฐ๋ฅ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด, Java ๊ธฐ์ค์ผ๋ก Dto์ ํ๋๋ช ์ด a์ด๋๋ผ๋
@JsonProperty
๋ฅผ ์ฌ์ฉํด์ a-1์ผ๋ก ๋งคํํ ์ ์๋๋ก ํด์ฃผ๋ ์ญํ ์ ํ๋ค.์ด ์ธ์ ์ ์ฉํ ์ต์ ์ผ๋ก
@JsonInclude
๋ ์๋ค. jackson์ ๊ฐ์ ์ ๋ฌด์ ์๊ด์์ด ๋ชจ๋ property๋ฅผ serializeํ๋ ๊ฒ ๊ธฐ๋ณธ๋์ ๋ฐฉ์์ธ๋ฐ, ์ด annotation์ ํตํด์ serialize์กฐ๊ฑด์ ์ง์ ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด@JsonInclude(JsonInclude.Include.NON_NULL)
์ ๊ฒฝ์ฐ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ง serializeํ๊ฒ ๋ค๋ ์๋ฏธ๊ฐ ๋๊ฒ ๋ค. ์์ธํ ๊ฒ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์
Last updated