๐ก
์๋ฒ์ ํด๋ผ์ด์ธํธ ๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋์ ์๋ฃ ํ์ ์ค ๋ํ์ ์ธ ๊ฒ์ด XML๊ณผ JSON์ด๋ค. ์ด ๋์ ๊ณต์ ํฌ๋งท์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ฐ๋ฐ์ ์ฌ์ด์์ ๋ฐ์ดํฐ ํต์ ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ฉฐ, '๋ฐ์ดํฐ ์ ์ฅ๊ณผ ์ ๋ฌ'์ด ๋ชฉ์ ์ด๋ผ๋ ์ ์์ ๋ฎ์ ์๋ค. XML๊ณผ JSON ๊ฐ๊ฐ์ ํน์ง์ ์์๋ณด๊ณ , ๋์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ์ง์ผ๋ฉฐ XML์ด JSON์ผ๋ก ๋์ฒด๋๋ ์ต๊ทผ์ ํ๋ฆ์ ์ดํดํด ๋ณด์.
๐ XML์ด๋?
EXtensible Markup Language์ ์ฝ์๋ก, HTML๊ณผ ๋น์ทํ ๋ฌธ์ ๊ธฐ๋ฐ์ ๋งํฌ์
์ธ์ด์ด๋ค. (๋งํฌ์
์ธ์ด: ํ๊ทธ ๋ฑ์ ํตํด ๋ฌธ์๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ ํ๋ ์ธ์ด) ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ๋ชฉ์ ์ธ HTML๊ณผ ๋ฌ๋ฆฌ, XML์ ๋ชฉ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ๋ ๊ฒ์ด๋ค :D
XML์ ํํ
๋ค์์ ์์๋ฅผ ํตํด ํํ๋ฅผ ์ดํด๋ณด์.
<dog>
<name>์๋นต</name>
<family>์ฐ์์ฝ๊ธฐ</family>
<age>1</age>
<weight>2.14</weight>
</dog>
- ํ๊ทธ(tag) : ๋ชจ๋ ์ ๋ณด๋ ์ด๋ฆฌ๋ ํ๊ทธ(<>)์ ๋ซํ๋ ํ๊ทธ(</>)๋ฅผ ์ฌ์ฉํด ํํํ๋ฉฐ, ์ด ํ๊ทธ๋ ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ํ ์ ์๋ค.
- ํธ๋ฆฌ ๊ตฌ์กฐ : dog ์์ name, family, age, weight ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๋ ๊ฒ๊ณผ ๊ฐ์ด ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
XML์ ํน์ง
- ๋ค๋ฅธ ๋ชฉ์ ์ ๋งํฌ์
์ธ์ด๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ค๋ชฉ์ ๋งํฌ์
์ธ์ด์ด๋ค.
- ๋ค๋ฅธ ์์คํ
๋ผ๋ฆฌ ๋ค์ํ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์์ฝ๊ฒ ๊ตํํ ์ ์๋๋ก ํด์ค๋ค.
- ์๋ก์ด ํ๊ทธ๋ฅผ ๋ง๋ค์ด ์ถ๊ฐํด๋ ๊ณ์ํด์ ๋์ํ๋ฏ๋ก, ํ์ฅ์ฑ์ด ์ข๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ์ง ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ์ ์ฅํ๋ ๊ฒ๋ง์ ๋ชฉ์ ์ผ๋ก ํ๋ค.
- ํ
์คํธ ๋ฐ์ดํฐ ํ์์ ์ธ์ด๋ก, ๋ชจ๋ XML ๋ฌธ์๋ ์ ๋์ฝ๋ ๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง๋ค.
๐ JSON์ด๋?
JavaScript Object Notation(์๋ฐ ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ํ๊ธฐ๋ฒ)์ ์ฝ์๋ก, ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ ์ฅํ๊ณ ๊ตํํ๊ธฐ ์ํ '๋ฐ์ดํฐ ๊ตํ ํ์ค[ํฌ๋งท]'์ด๋ค. ์ด๋ XML์ ๋์์ผ๋ก์ ์ข ๋ ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ตํํ๊ธฐ ์ํด ๊ณ ์๋์๋ค.
JSON์ ํํ
๋ค์์ ์์๋ฅผ ํตํด ํํ๋ฅผ ์ดํด๋ณด์.
{
"name": "์๋นต",
"family": "์ฐ์์ฝ๊ธฐ",
"age": 1,
"weight": 2.14
}
- ํค(key)์ ๊ฐ(value) : ํค, ๊ฐ์ด ์์ผ๋ก ์ด๋ฃจ์ด์ง ๊ตฌ์กฐ์ด๋ฉฐ ๋ ์ฌ์ด๋ ์ฝ๋ก (:)์ผ๋ก ๊ตฌ๋ถํ๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๋์ดํ ๊ฒฝ์ฐ ์ผํ(,)๋ฅผ ์ฌ์ฉํ๋ค.
- ๊ฐ์ฒด์ ๋ฐฐ์ด : ๊ฐ์ฒด(Object)๋ ์ค๊ดํธ({})๋ก ๋ฌถ์ด์, ๋ฐฐ์ด(Array)์ ๋๊ดํธ([])๋ก ๋ฌถ์ด์ ํํํ ์ ์๋ค.
JSON์ ํน์ง
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฅํ์ฌ ๋ง๋ค์ด์ก๋ค.
(์๋ฐ์คํฌ๋ฆฝํธ์ ๋น์ทํ๋ค : key-value ์์ผ๋ก ํํ)
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ํ๊ธฐ๋ฒ์ ๋ฐ๋ฅธ๋ค(์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฌธ๋ฒ์ ์ฑ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ eval๋ช
๋ น์ผ๋ก ๊ณง๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ -> ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ ์น ํ๊ฒฝ์์ ์ ๋ฆฌํ๋ค).
- ์ฌ๋๊ณผ ๊ธฐ๊ณ๊ฐ ๋ชจ๋ ์ฝ๊ธฐ ํธํ๋๋ก ๊ณ ์๋์๋ค.
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ด์์ฒด์ ์ ๋
๋ฆฝ์ ์ด๋ฏ๋ก ์๋ก ๋ค๋ฅธ ์์คํ
๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ตํํ๊ธฐ์ ์ข๋ค : ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ JSON ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค.
- ๋ด์ฉ์ ํจ์ถ์ ์ผ๋ก ๋ค๋ฃจ์ด ์ต์ํ์ ์ ๋ณด๋ง ๊ฐ์ง๊ณ ์๋ค.
๐ XML์์ JSON์ผ๋ก! - ๋์ ๊ณตํต์ , ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ์ ํ๋ฆ
๊ณตํต์
- ๋ชฉ์ : ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ๊ธฐ ์ํจ์ด๋ค.
- ๊ฐ๋
์ฑ : ๊ธฐ๊ณ์ ์ฌ๋์ด ์ฝ๊ฒ ์ฝ์ ์ ์๋ค.
- ๋
๋ฆฝ์ฑ : ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ํด ํ์ฑ ๋ ์ ์๋ค(ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก๋ถํฐ ๋
๋ฆฝ์ ์ด๋ค).
- ๋ฐ์ดํฐ ์ง๋ ฌํ(serialize) ํ์ : ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๊ณ๊ฐ ์ฐ๊ณ ์ฝ๊ธฐ ํธ๋ฆฌํ๊ฒ ์ง๋ ฌํํ์ฌ ๋ํ๋ธ ํ์์ด๋ค.
์ฐจ์ด์
- ๋ฐ์ดํฐ ํํ : XML์ ๋ฐ์ดํฐ ๊ฐ ์์ชฝ์ผ๋ก ํ๊ทธ(tag)๋ฅผ ๋ถ์ฌ ํํํ๊ณ , JSON์ ํค(key)์ ์ฐ๊ฒฐํด ํํํ๋ค.
(XML์ ํต์ฌ์ ํ๊ทธ, JSON์ ํต์ฌ์ key-value)
- ๊ตฌ์กฐ : XML์ ํธ๋ฆฌ ํจํด์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ๋ฐ๋ฉด, JSON์ ํค-๊ฐ ํ์ด๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ฐฐ์ด์ ์ฌ์ฉ : XML์ ๋ฐฐ์ด์ ์ฌ์ฉํ ์ ์์ง๋ง, JSON์ ๋ฐฐ์ด์ ์ฌ์ฉํ ์ ์๋ค.
- ์ฃผ์์ ์ฌ์ฉ : XML์ ์ฃผ์์ ์ฌ์ฉํ ์ ์์ง๋ง, JSON์ ์ฃผ์์ ์ฌ์ฉํ ์ ์๋ค.
- ๊ธธ์ด : JSON์ ๊ตฌ๋ฌธ์ด XML ๊ตฌ๋ฌธ๋ณด๋ค ๋ ์งง๋ค(ํ๊ทธ๋ฅผ ์๋ค๋ก ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค).
- ์๋ : JSON ๋ฐ์ดํฐ๊ฐ XML ๋ฐ์ดํฐ๋ณด๋ค ๋ ๋นจ๋ฆฌ ์ฝ๊ณ ์ธ ์ ์๋ค(๊ท์น์ด ๋ ๊ฐ๋จํ๊ณ , ํ๊ทธ์ ๋ํ ์ค๋ฒํค๋๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค).
์ต๊ทผ์ ํ๋ฆ
ํ์ฌ๋ XML์ด ๊ฐ๋ฐ์ ์ฌ์ด์์ ์ธ๊ธฐ๋ฅผ ์๊ณ ์์ผ๋ฉฐ, ๋ ์ ์ฐํ๊ณ ๋น ๋ฅธ ํ์์ธ JSON์ผ๋ก ๋์ฒด๋๊ณ ์๋ค.
XML๊ณผ JSON, ๊ต์ฒด์ ๋ฐฐ๊ฒฝ
์ฒ์์ XML์ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์ฌ์ด์์ ๋ฐ์ดํฐ ์ ์ก์ด ํธ๋ฆฌํ๊ฒ ํ๋ค๋ ์ฅ์ ์ผ๋ก ํฌ๊ฒ ์ฑ์ฅํ๊ณ , ์ด ๋๋ฌธ์ ๋ง์ดํฌ๋ก์ํํธ๋ ์คํผ์ค 2007์์ ์๋(Word)์ ์์
(Excel) ํ์ผ ํ์์ XML๋ก ๋ฐ๊พธ์๋ค.
๊ทธ๋ฌ๋ XML์ ๋ฌธ์ ๋, ์ฅํฉํ๊ณ ๋ณต์กํ๋ค๋ ๊ฒ์ด์๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์คํ
์ ์
๋ ฅํ๊ธฐ ์ํด XML์ ๋งคํ(Mapping) ํ๊ธฐ๊ฐ ์ด๋ ต๊ณ , ๋ฐ์ดํฐ๊ฐ ํน์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง์ถฐ ๊ตฌ์กฐํ๋ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊น๋ค๋ก์ ๋ค. ๋ง์ ํ๊ทธ ๋๋ฌธ์ ๋ฌธ์๋์ด ๋์ด๋ ์๋ต ์๊ฐ์ด ๋๋ฆฐ ๊ฒ๋ ๋จ์ ์ด์๋ค. ์ด๋ 'XML์ ๋ฌด๊ฒ๋ค'๋ผ๋ ์ธ์์ ์์์ด ๋๊ธฐ๋ ํ๋ค.
์ด๋ฐ ๊ฐ์ด๋ฐ JSON์ด ๋ฑ์ฅํ๋ฉด์ ๋น ๋ฅธ ์๋๋ก ํ์ฐํ๋ค. ์ฒ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์
ํ์ง๋ง, ์ง๊ธ์ ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํ๋ฉด์ ๋น๋๊ธฐ์ ๋ธ๋ผ์ฐ์ /์๋ฒ ํต์ ์ ์ํ XML์ ๋์์ผ๋ก ๋ ์ค๋ฅด๊ณ ์๋ค.
๐ก์ฌ์ค ์ด๊ธฐ์๋ (๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ ํ์์ผ๋ก) HTML๊ณผ ๋น์ทํ XML์ด ๋์ฑ ์ธ๊ธฐ๊ฐ ๋ง์๋ค. ํ์ฌ JSON์ด ๋์ฑ ์ธ๊ธฐ๋ฅผ ์ป๊ฒ ๋ ์ฐ์ ๋ ์์์ ์ดํด๋ณธ XML๊ณผ JSON์ ์ฐจ์ด์ ๊ณผ ์ด์ด์ง๋ ๊ฒ์ด ๋ง๋ค. ์ด๋ ์๋์์ ์ดํด๋ณด์.
๋์ฒด์ ์ด์
- ๋ณต์ก์ฑ : ์ต๊ทผ์๋ ๋ณต์กํ๊ณ ๊ตฌ์กฐํ๋ ๊ฐ๋
์ ๋จ๋
์ผ๋ก ํํํ๋ ๊ฒ์ด ๊ทธ๋ฆฌ ์ ์ฉํ์ง ์๋ค๋ ์ธ์์ด ์๋ฆฌ ์ก์ผ๋ฉด์, ํฌ๊ณ ๋ฌด๊ฑฐ์ด ์์คํ
๋ณด๋ค๋ ์ ์ฐํ๊ณ ๊ตฌ์ฑ ๊ฐ๋ฅํ ํด์ด ํ์๋ฐ๊ณ ์๋๋ฐ JSON์ด ์ด์ ์ ํฉํ๋ค.
- ๋ณด์ : XML์ ์ ์ ํ๊ฒ ํ์ฑ(Parsing)์ ๊ฑฐ์ณ๋ ๋ณด์ ์ทจ์ฝ์ฑ์ ์ผ๋ถ ๊ฐ๊ณ ์๋ค(BL : Billion Laughs ๊ณต๊ฒฉ ๋๋ EE : External Entity ๊ณต๊ฒฉ์ ๋ํ ์ทจ์ฝ์ฑ). XML์ ์ด๋ฐ ๊ธฐ๋ฅ์ ์ค์๋ก ํ์ฑํํ๋ฉด ์ ์ฒด๊ฐ ์ํ์ ์ฒํ๊ฒ ๋์ง๋ง, JSON์ ์ด๋ฌํ ์ํ์ ๊ฑฐ์ ๋
ธ์ถ๋์ง ์๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ : JSON์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋์ด, ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์ ๊ทธ ์์ฒด์ ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ฝ์๋ด๋๋ก ์ ์๋์๋ค. ์ด ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ง์ ๊ณณ์์ ์ฐ์ด๊ณ ๊ทธ ์ํฅ๋ ฅ์ด ์ปค์ง๋ฉด์ ์์ฐ์ค๋ JSON๋ ํ๋ฆ์ ํ๊ฒ ๋์๋ค.
- ํด ์ง์ : JSON์ ์ธ๊ธฐ๊ฐ ๋์์ง๋ฉด์ ๋ ๋ง์ ๊ฐ๋ฐ์ ํด์ด ์ด๋ฅผ ํ์ค์ผ๋ก ๋ฐ์๋ค์ด๊ณ ์์ผ๋ฉฐ ์ ์ฐจ ํ๋ ฅ์ด ๋ถ๊ณ ์๋ค(์ฌ์ค์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ JSON์ ์ง์ํ๋ค๋ ์ ์์ XML์ ๋นํด ์ฑํ๋ฅ ์ด ๋์์ง๊ณ ์๋ค).