[Java] json ์‚ฌ์šฉํ•˜๊ธฐ (Gson)

์ž๋ฐ”์—๋Š” json ๊ด€๋ จ ๊ธฐ๋Šฅ์ด ๋”ฐ๋กœ ๋‚ด์žฅ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค. ๊ทธ๋ž˜์„œ ๋ชจ๋“ˆ์„ ๋”ฐ๋กœ ๋•ก๊ฒจ์จ์•ผํ•˜๋Š”๋ฐ, ๊ฐ€์žฅ ์“ฐ๊ธฐ ์ ๋‹นํ•œ๊ฒŒ ๊ตฌ๊ธ€์—์„œ ๊ตฌํ˜„ํ•œ Gson์ด๋‹ค.

๋ผ์ด์„ผ์Šค๋„ ์•„ํŒŒ์น˜๋ผ์„œ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

maven์œผ๋กœ ๋ฐ›์•„๋„ ๋˜์ง€๋งŒ ๋‚˜๋Š” ๊ทธ๋ƒฅ jar์„ ๋‹ค์šด๋ฐ›์•„์„œ ์ผ๋‹ค.
์—ฌ๊ธฐ์„œ .jar ํŒŒ์ผ์„ ๋ฐ›์œผ๋ฉด ๋œ๋‹ค. ๋‹ค๋ฅธ ๋ฒ„์ „ ๋ฐ›๊ณ ์‹ถ์œผ๋ฉด ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋™ํ•ด์„œ ์ฐพ์œผ๋ฉด ๋˜๊ณ .
https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.6/

๊ทธ๋ฆฌ๊ณ  IDE์—์„œ ์ด๊ฑธ ๋“ฑ๋กํ•ด์ค€๋‹ค. ์ดํด๋ฆฝ์Šค๋Š” ์˜ ๋ถˆํŽธํ•ด์„œ ๋‚œ ์ธํ…”๋ฆฌ์ œ์ด๋ฅผ ์“ด๋‹ค.
Project Structure๋ฅผ ๋“ค์–ด๊ฐ„๋‹ค.

Java๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ๋“ค์–ด๊ฐ€๊ณ , ์•„๊นŒ ๋ฐ›์€ .jar์„ ์ž˜ ์ฐพ์•„๋„ฃ๋Š”๋‹ค.

OK

๋‹ค Okํ•˜๋ฉด ์ด์ œ ๋“ฑ๋ก์ด ๋œ ๊ฒƒ์ด๋‹ค.

๋ฌธ์„œ๋Š” ์ด๊ฑธ ๋ณด๋ฉด ๋œ๋‹ค.
https://www.javadoc.io/doc/com.google.code.gson/gson/2.8.6/index.html
๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด, JsonObject๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

์•„๋ž˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์š”์†Œ๊ฐ’์„ ๋ช‡๊ฐœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋‹ค.

objectd์˜ add ๋ฉ”์„œ๋“œ๋Š” ํ‚ค์™€ ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›๋Š”๋ฐ, ๊ฐ’์€ ์ถ”์ƒํด๋ž˜์Šค JsonElement์˜ ์„œ๋ธŒํƒ€์ž…์ด์•ผ๋งŒ ํ•œ๋‹ค.
์„œ๋ธŒํƒ€์ž…์œผ๋กœ๋Š” ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” JsonPrimitive,
๋„๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” JsonNull, ๋ฐฐ์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” JsonArray, ๋˜ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” JsonObject๊ฐ€ ์žˆ๋‹ค.

๊ทผ๋ฐ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ๊ฐ’์€ ๋„ฃ์–ด์•ผ๊ฒ ๊ณ , JsonPrimitive๋ฅผ ๊ท€์ฐฎ๊ฒŒ ์“ฐ๊ณ ์‹ถ์ง€ ์•Š์„๋•Œ ์ ์ ˆํ•œ ๊ฒƒ์ด addProperty๋‹ค.
๋” ๊ฐ„๊ฒฐํ•˜๋‹ค.

์ด๋ฏธ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” json ํ…์ŠคํŠธ๋Š” JsonParser์˜ ์ •์ ๋ฉ”์„œ๋“œ๋“ค๋กœ ํŒŒ์‹ฑํ•ด์„œ JsonObject ๋“ฑ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

parse ๋ฉ”์„œ๋“œ๋“ค์€ ๊ณตํ†ต ์ƒ์œ„ํƒ€์ž…์ธ JsonElement๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, getAs...๋“ฑ์œผ๋กœ ์บ์ŠคํŒ…์„ ํ•ด์ค˜์•ผํ•œ๋‹ค.

์ด์™ธ์—๋„ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ „๋ถ€ ๋ฐ›์•„์„œ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํŒŒ์‹ฑ ๋ฉ”์„œ๋“œ๋„ ์žˆ๋‹ค.

๊ทผ๋ฐ ๋ฒ„์ „์— ๋”ฐ๋ผ์„œ ์ „๋ถ€ parse๋กœ ํ•ฉ์ณ์„œ ์˜ค๋ฒ„๋กœ๋”ฉํ•˜๊ธฐ๋„ํ•˜๊ณ , ์ €๋ ‡๊ฒŒ parseReader, parseString ๋“ฑ์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ๋„ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.