[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 ๋ฑ์ผ๋ก ๋๋๊ธฐ๋ ํ๋ ๊ฒ ๊ฐ๋ค.