[Spring] JSON๊ณผ Message Converter

JSON๊ณผ Message Converter

์Šคํ”„๋ง ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ JSON ํ˜•์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์ด์œ ์™€ Message Converter๋ฅผ ์•Œ์•„๋ณด์ž.

ํ†ต์‹ 

1

์œ„์™€ ๊ฐ™์ด ํ•œ๊ตญ์ธ๊ณผ ๋…์ผ์ธ์ด ์„œ๋กœ ํ†ต์‹ ์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.
์„œ๋กœ์˜ ์ž๊ตญ์–ด์— ๋Œ€ํ•œ ์ง€์‹์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ž.
ํ•œ๊ตญ์ธ์€ ๋…์ผ์–ด๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ตญ์–ด๋ฅผ ๋ณด๋‚ผ ๊ฒƒ์ด๊ณ  ๋…์ผ์ธ์€ ์ด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†๋‹ค.
๋ฐ˜๋Œ€์˜ ์ƒํ™ฉ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.

ํ•œ๊ตญ์ธ์ด ๋…์ผ์–ด๋ฅผ ๋ฐฐ์›Œ์„œ ๋…์ผ์–ด๋ฅผ ๋ณด๋‚ด๊ณ , ๋…์ผ์ธ์—๊ฒŒ ๋…์ผ์–ด๋ฅผ ์‘๋‹ต๋ฐ›์œผ๋ฉด ์–ด๋–จ๊นŒ?
์˜์‚ฌ์†Œํ†ต์€ ๋˜๊ฒ ์ง€๋งŒ ํ•œ๊ตญ์ธ์—๊ฒŒ ๋งŽ์€ ๋ถ€๋‹ด์ด ์ƒ๊ธด๋‹ค.
๋˜ํ•œ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋…์ผ์ธ๊ณผ์˜ ์†Œํ†ต์€ ๋˜์ง€๋งŒ, ๋‹ค๋ฅธ ๋‚˜๋ผ์˜ ์‚ฌ๋žŒ๋“ค๊ณผ๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ๊ทธ๋•Œ๊ทธ๋•Œ ์ตํ˜€์•ผ ํ•œ๋‹ค.

๊ณตํ†ต์–ด

2

ํ•œ๊ตญ์ธ๊ณผ ๋…์ผ์ธ์ด ์˜์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด๊ณ , ์œ„์™€ ๊ฐ™์ด ์˜์–ด๋กœ ์†Œํ†ตํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž.
์ž๊ตญ์–ด๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๋ฌด๊ฑฐ์šด ์ž‘์—…์ด์ง€๋งŒ, ํ•œ๊ตญ์ธ์ด ๋…์ผ์–ด๋ฅผ ๋ฒˆ์—ญํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๊ฐ€๋ฒผ์šด ์ž‘์—…๋Ÿ‰์ด ๋œ๋‹ค.
๋˜ํ•œ ์˜์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋‚˜๋ผ์™€๋„ ์ถ”๊ฐ€์ ์ธ ์ž‘์—… ์—†์ด ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋‹ค.

JSON

3

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋„ ์ด์™€ ๊ฐ™์€ ์›๋ฆฌ๊ฐ€ ์ ์šฉ๋œ๋‹ค.
์ž๋ฐ”๋กœ ์ด๋ฃจ์–ด์ง„ ์„œ๋ฒ„์™€ C#์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ž.
์„œ๋กœ์˜ ๋ฌธ๋ฒ•์— ๋งž๋Š” ๊ฐ์ฒด๋ฅผ ๋ณด๋‚ด๋ฉด ๋ฐ›์€ ์ชฝ์—์„œ ์ด๋ฅผ ๋‹ค์‹œ ์ž์‹ ์˜ ๋ฌธ๋ฒ•์— ๋งž๋Š” ๊ฐ์ฒด๋กœ ๋ณ€ํ˜•ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
์ด๋•Œ ๊ณตํ†ต์–ด์ธ ์˜์–ด์ฒ˜๋Ÿผ ์„œ๋กœ JSON(JavaScript Object Notation) (ํ˜น์€ xml)๋กœ ๋ฐ”๊ฟ” ๋ณด๋‚ธ๋‹ค๋ฉด, ์„œ๋กœ์˜ ์ž‘์—…์„ ์ค„์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ JSON ๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„๋“ค๊ณผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

Message Converter

์Šคํ”„๋ง์—์„  ์ด์™€ ๊ฐ™์€ ๋ณ€ํ™˜์„ Message Converter์—์„œ ํ•ด์ค€๋‹ค.
์ž๋ฐ”๋Š” ํ†ต์‹ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ BufferedReader๋ฅผ ํ†ตํ•ด 1byte์”ฉ ๋™์ ์œผ๋กœ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค.
์ด ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ Message Converter ์•ˆ์˜ jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๋ณ€ํ™˜ํ•ด ์ค€๋‹ค.
์ด๋Ÿฌํ•œ ์ž๋ฃŒ๋Š” http body์— ๋‹ด๊ฒจ์„œ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„  @RequestBody ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ์ž๋ฃŒ๋ฅผ ์ „๋‹ฌ๋ฐ›๊ณ  ์„œ๋ฒ„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋•Œ์˜ ๋ณ€ํ™˜์€ ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ๋‹ค๋ฅธ ์ชฝ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ๋„ message converter๊ฐ€ JSON์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ๋ณด๋‚ด์ฃผ๊ณ , ๋ฐ›์„ ๋•Œ ์—ญ์‹œ ๋ฐ›์€ ์ž๋ฃŒ๋ฅผ JSON์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ๋ณด๋‚ด์ค€๋‹ค.