JSON๊ณผ XML์ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ณ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ ๊ฐ์ง ํ์์ด๋ค.
1. XML
XML์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก์ผ๋ฉฐ, ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ ํ๊ธฐ ์ํ ์ธ์ด์ด๋ฉฐ EXtensible Markup Language์ ์ฝ์์ด๋ค.
- XML์ ๋ค๋ฅธ ๋ชฉ์ ์ ๋งํฌ์
์ธ์ด๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ค๋ชฉ์ ๋งํฌ์
์ธ์ด
- XML์ ๋ค๋ฅธ ์์คํ
๋ผ๋ฆฌ ๋ค์ํ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์์ฝ๊ฒ ๊ตํํ ์ ์๋๋ก ํด์ค๋ค.
- XML์ ์๋ก์ด ํ๊ทธ๋ฅผ ๋ง๋ค์ด ์ถ๊ฐํด๋ ๊ณ์ํด์ ๋์ํ๋ฏ๋ก, ํ์ฅ์ฑ์ด ์ข๋ค.
- XML์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ์ง ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ์ ์ฅํ๋ ๊ฒ๋ง์ ๋ชฉ์ ์ผ๋ก ํ๋ค.
- XML์ ํ
์คํธ ๋ฐ์ดํฐ ํ์์ ์ธ์ด๋ก ๋ชจ๋ XML ๋ฌธ์๋ ์ ๋์ฝ๋ ๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง๋ค.
XML ๊ธฐ๋ฐ์ ์ธ์ด
XHTML, SVG, RDF, RSS, Atom, MathML ๋ฑ
XML ์ค๊ณ๋ชฉ์
์๋ก ํธํ๋์ง ์๋ ๋ฐ์ดํฐ ํ์
์ ์ฌ์ฉํ๋ ์์คํ
๊ฐ์ ๋ฐ์ดํฐ ๊ตํ์๋ ๋ง์ ์๊ฐ๊ณผ ๋
ธ๋ ฅ์ด ๋ฐ์ํ๋ค .์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ์ ์์ค์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ์ข
์ข
์๊ธฐ๋ ํ๋ค. ํ์ง๋ง XML์ ๋ฐ์ดํฐ๋ฅผ ํ
์คํธ ํ์์ผ๋ก ์ ์ฅํ๋ฏ๋ก, ์ํํธ์จ์ด๋ ํ๋์จ์ด์ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ ์ ์๋ค. ๋ฐ๋ผ์ XML์ ์ฌ์ฉํ๋ฉด ์๋ก์ด ์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ, ๋ธ๋ผ์ฐ์ ๋ฑ์ ์๊ด์์ด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์์ฝ๊ฒ ์ ๋ฌํ ์ ์๋ค.
2.JSON
JSON์ JavaScript Object Notation์ ์ฝ์์ด๋ค. JSON์ XML์ ๋์์ผ๋ก์ ์ข ๋ ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ณ ์ ์ฅํ๊ธฐ ์ํ์ฌ ๋ง๋ค์ก๋ค. JSON์ ํ ์คํธ ๊ธฐ๋ฐ์ด๋ฏ๋ก ์ด๋ ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ JSON ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฌ์ฉํ ์ ์๋ค.
JSON์ ํน์ง
JSON์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฅํ์ฌ ๋ง๋ค์ด์ก๋ค.
JSON์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ํ๊ธฐ๋ฒ์ ๋ฐ๋ฅธ๋ค.
JSON์ ์ฌ๋๊ณผ ๊ธฐ๊ณ๊ฐ ๋ชจ๋ ์ฝ๊ธฐ ํธํ๋๋ก ๊ณ ์๋์๋ค.
JSON์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ด๋ค.
3. JSON๊ณผ XML์ ๊ณตํต์
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ๊ธฐ ์ํด ๊ณ ์๋จ
- ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. (๊ฐ์ฒด ์์ ๊ฐ์ฒด)
- ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ํด ํ์ฑ๋ ์ ์๋ค.
- ๋ ๋ค XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ก๋ฐ์ ์ ์๋ค.
4. JSON๊ณผ XML์ ์ฐจ์ด์
- JSON์ ์ข
๋ฃ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
- JSON์ ๊ตฌ๋ฌธ์ด XML์ ๊ตฌ๋ฌธ๋ณด๋ค ๋ ์งง๋ค.
- JSON ๋ฐ์ดํฐ๊ฐ XML ๋ฐ์ดํฐ๋ณด๋ค ๋ ๋นจ๋ฆฌ ์ฝ๊ณ ์ธ ์ ์๋ค.
- XML์ ๋ฐฐ์ด์ ์ฌ์ฉํ ์ ์์ง๋ง, JSON์ ๋ฐฐ์ด์ ์ฌ์ฉํ ์ ์๋ค.
- XML์ XML ํ์๋ก ํ์ฑ๋๊ณ , JSON์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ค ํจ์์ธ eval() ํจ์๋ก ํ์ฑ๋๋ค.
JSON
๋ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฌ์.
์๋ฐ์คํฌ๋ฆฝํธ์ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋จ.
๋ฐ์ดํฐ ๊ตฌ์กฐ(๊ฐ์ฒด, ๋ฐฐ์ด)๋ฅผ ์ง์ ํํ ๊ฐ๋ฅ.
์น ๊ฐ๋ฐ๊ณผ API์ ์์ฃผ ์ฌ์ฉ๋๋ค.
XML
์์ฑ(attributes)์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํํ ๊ฐ๋ฅ.
์คํค๋ง ๊ฒ์ฆ ๊ธฐ๋ฅ(XSD, DTD)์ผ๋ก ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ ๊ฐ๋ฅ.
๋ฌธ์ ํ์์ด๋ ๋ ๊ฑฐ์ ์์คํ ๊ณผ ํต์ ํ ๋ ๋ ์์ฃผ ์ฌ์ฉ๋๋ค.
์์(ํ์์ ๋ณด)
JSON ํ์
JSON ๊ฐ์ฒด --> ์ค๊ดํธ {} ์ฌ์ฉ
JSON ์์ ๊ฐ์ฒด(Object)๋? --> key : value ์ ํ ์์ผ๋ก ์ด๋ฃจ์ด์ง ์ ๋ ฌ๋์ง ์์ ์์ฑ(property)๋ค์ ์งํฉ
์ฝค๋ง(,)๋ก ๊ตฌ๋ถํ์ฌ ์ฌ๋ฌ๊ฐ์ ์์ฑ์ ๊ฐ์ง ์ ์๋ค.
๋ฌธ์์ด์ ๋ฐ๋์ ํฐ๋ฐ์ดํ("")๋ก ๋ฌถ์ด ์ค๋ค.
{
"student": {
"id": 123,
"name": "Alice",
"grade": "A",
"subjects": ["Math", "Science", "English"]
}
}
JSON ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด์ ์กฐํฉ
์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.
{
"person": [
{
"name": "Alice",
"age": 21,
"major": "Computer Science"
},
{
"name": "Bob",
"age": 23,
"major": "Mathematics"
},
{
"name": "Charlie",
"age": 20,
"major": "Physics"
}
]
}
person์ด๋ผ๋ ํค์ ๋ฐฐ์ด์ ๊ฐ์ผ๋ก ํ ๋น. ๋ฐฐ์ด์ [] ๋๊ดํธ๋ก ํํํ๋ค.
๋ฐฐ์ด ์์: ๊ฐ ์์๋ { }๋ก ๊ตฌ์ฑ๋ JSON ๊ฐ์ฒด์ด๋ฉฐ, ํ์์ ์ ๋ณด๋ฅผ ์ ์ฅ.
name, age, major๋ ๊ฐ ๊ฐ์ฒด์ ํค์ด๊ณ , ํค์ ํด๋นํ๋ ๊ฐ์ ๊ฐ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
ํน์ ํ์์ ์ด๋ฆ ๊ฐ์ ธ์ค๋ ค๋ฉด?
์ฒซ ๋ฒ์งธ ํ์ ์ด๋ฆ: person[0].name → "Alice"
๋ ๋ฒ์งธ ํ์ ์ด๋ฆ: person[1].name → "Bob"
const person = [
{ name: "Alice", age: 21, major: "Computer Science" },
{ name: "Bob", age: 23, major: "Mathematics" },
{ name: "Charlie", age: 20, major: "Physics" }
];
// ์ฒซ ๋ฒ์งธ ํ์ ์ด๋ฆ
const firstStudentName = (() => person[0].name)();
console.log(firstStudentName); // "Alice"
// ๋ ๋ฒ์งธ ํ์ ์ด๋ฆ
const secondStudentName = (() => person[1].name)();
console.log(secondStudentName); // "Bob"
// ์ด๋ฆ ๋ฐ์ดํฐ ์ ์ฒด ๊ฐ์ ธ์ค๊ธฐ
const names = person.map(student => student.name);
console.log(names); // ["Alice", "Bob", "Charlie"]
// ๋ ๋ฒ์งธ ํ์์ ์ด๋ฆ, ๋์ด, ์ ๊ณต ์ถ๋ ฅ
console.log(person[1].name + " " + person[1].age + " " + person[1].major);
// ์ถ๋ ฅ: "Bob 23 Mathematics"
// ๋ ๋ฒ์งธ ํ์์ ์ ๋ณด (์ ๊ฐ ์ฐ์ฐ์ ์ฌ์ฉ)
const { name, age, major } = person[1]; // person[1]์ ๊ฐ์ ํ์ด ๋ณ์์ ํ ๋น
console.log(`${name} ${age} ${major}`);
// ์ถ๋ ฅ: "Bob 23 Mathematics"
// ๋ฐฐ์ด์ ์ ๊ฐํ์ฌ ์ถ๋ ฅ
// ์ ๊ฐ์ฐ์ฐ์ ...๋ฐฐ์ด๋ช
console.log(...person);
// ์ถ๋ ฅ๊ฒฐ๊ณผ
{ name: "Alice", age: 21, major: "Computer Science" }
{ name: "Bob", age: 23, major: "Mathematics" }
{ name: "Charlie", age: 20, major: "Physics" }
XML ํ์
<student>
<id>123</id>
<name>Alice</name>
<grade>A</grade>
<subjects>
<subject>Math</subject>
<subject>Science</subject>
<subject>English</subject>
</subjects>
</student>
๋น๊ต
๊ตฌ์กฐ | ํค-๊ฐ ์ (key-value) ๊ธฐ๋ฐ | ํ๊ทธ(<tag>) ๊ธฐ๋ฐ |
๊ฐ๋ ์ฑ | ๋จ์ํ๊ณ ์งง์ ๊ตฌ๋ฌธ์ผ๋ก ๊ฐ๋ ์ฑ์ด ์ข์ | ํ๊ทธ๊ฐ ๋ง์์ง๋ฉด ๊ตฌ๋ฌธ์ด ๋ณต์กํด์ง ์ ์์ |
๋ฐ์ดํฐ ์ ํ ์ง์ | ๋ฌธ์์ด, ์ซ์, ๋ฐฐ์ด, ๊ฐ์ฒด ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ ์ง์ | ๋ชจ๋ ๋ฐ์ดํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌธ์์ด๋ก ์ฒ๋ฆฌ๋จ |
๋ฐฐ์ด ํํ | ๋ฐฐ์ด์ [ ]๋ก ํํ ๊ฐ๋ฅ | ๋ฐฐ์ด์ ๋ฐ๋ณต๋ ํ๊ทธ๋ก ํํ |
์ฌ์ฉ ๋ชฉ์ | ์ฃผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ API์์ ๋ฐ์ดํฐ ์ ์ก์ ์ฌ์ฉ | ๋ฌธ์ ํํ ๋ฐ ๋ฐ์ดํฐ ์ ์ก์ ์ฌ์ฉ |
ํฌ๊ธฐ | ์๋์ ์ผ๋ก ๋ ์์ | ํ๊ทธ๋ก ์ธํด ํฌ๊ธฐ๊ฐ ๋ ์ปค์ง ์ ์์ |