DevLog

TIL(20210716) - JSON & XML ๋ณธ๋ฌธ

๐Ÿค” TIL(Today I Learned)

TIL(20210716) - JSON & XML

Seungjae Lee 2021. 7. 16. 23:59

๐ŸŽ  Daily

- JavaScript ๋น„๋™๊ธฐ JSON ๊ฐœ๋… ํ•™์Šต

- XML๊ณผ JSON์˜ ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์  ํ•™์Šต

 

๐Ÿค”  Learned

JSON(JavaScript Object Notation)

  • JSON์€ ์ข€ ๋” ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ณ  ์ €์žฅํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค.
  • JSON์€ XML์˜ ๋Œ€์•ˆ์œผ๋กœ์„œ ์ข€ ๋” ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ณ  ์ €์žฅํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ค.
  • ๋˜ํ•œ, JSON์€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์–ด๋– ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋„ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

XML(EXtensible Markup Language)

  • XML์€ HTML๊ณผ ๋งค์šฐ ๋น„์Šทํ•œ ๋ฌธ์ž ๊ธฐ๋ฐ˜์˜ ๋งˆํฌ์—… ์–ธ์–ด(text-based markup language)์ž…๋‹ˆ๋‹ค.
  • ์ด ์–ธ์–ด๋Š” ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„๊ฐ€ ๋™์‹œ์— ์ฝ๊ธฐ ํŽธํ•œ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • XML์€ HTML์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ชฉ์ ์ด ์•„๋‹Œ, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•  ๋ชฉ์ ์œผ๋กœ๋งŒ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.
  • XML ํƒœ๊ทธ๋Š” HTML ํƒœ๊ทธ์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

JSON๊ณผ XML์˜ ๊ณตํ†ต์ 

  1. ๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‘˜ ๋‹ค ๊ธฐ๊ณ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ๋žŒ๋„ ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋‘˜ ๋‹ค ๊ณ„์ธต์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  4. ๋‘˜ ๋‹ค ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์˜ํ•ด ํŒŒ์‹ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ๋‘˜ ๋‹ค XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JSON๊ณผ XML์˜ ์ฐจ์ด์ 

  1. JSON์€ ์ข…๋ฃŒ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. JSON์˜ ๊ตฌ๋ฌธ์ด XML์˜ ๊ตฌ๋ฌธ๋ณด๋‹ค ๋” ์งง์Šต๋‹ˆ๋‹ค.
  3. JSON ๋ฐ์ดํ„ฐ๊ฐ€ XML ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. XML์€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ, JSON์€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. XML์€ XML ํŒŒ์„œ๋กœ ํŒŒ์‹ฑ๋˜๋ฉฐ, JSON์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œ์ค€ ํ•จ์ˆ˜์ธ eval() ํ•จ์ˆ˜๋กœ ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค.

XML ์˜ˆ์ œ

<dog>
    <name>์Šน์žฌ</name>
    <family>์ธ๊ฐ„<family>
    <age>28</age>
    <weight>70</weight>
</dog>

JSON ์˜ˆ์ œ

{
    "name": "์Šน์žฌ",
    "family": "์ธ๊ฐ„",
    "age": 28,
    "weight": 70
}

1. JSON.stringify() ๋ฉ”์†Œ๋“œ

 JSON.stringify() ๋ฉ”์†Œ๋“œ๋Š” ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ๋ฒ•)

JSON.stringify(value)

์˜ˆ์ œ)

// 1. Object to JSON
// stringfy(obj)
let json = JSON.stringify(['apple', 'banana']);
console.log(json);

const rabbit = {
    name: 'tori',
    color: 'white',
    size: null,
    birthDate: new Date(),
    jump: () => {
        console.log(`${name} can jump!`);
    },
};

json = JSON.stringify(rabbit);
console.log(json);

json = JSON.stringify(rabbit, ['name', 'color', 'size']);
console.log(json);

json = JSON.stringify(rabbit, (key, value) => {
    console.log(`key: ${key}, value: ${value}`);
    return key === 'name' ? 'Seungjae' : value;
});
console.log(json);

 

2. JSON.parse() ๋ฉ”์†Œ๋“œ

JSON.parse() ๋ฉ”์†Œ๋“œ๋Š” JSON.stringify() ๋ฉ”์†Œ๋“œ์™€๋Š” ๋ฐ˜๋Œ€๋กœ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ๋ฒ•)

JSON.parse(text)

์˜ˆ์ œ)

// 2. JSON to Object 
// parse(json)
console.clear();
json = JSON.stringify(rabbit);
console.log(json);
const obj = JSON.parse(json, (key, value) => {
    console.log(`key: ${key}, value: ${value}`);
    return key === 'birthDate' ? new Date(value) : value;
});
console.log(obj);
rabbit.jump();
//obj.jump();

console.log(rabbit.birthDate.getDate());
console.log(obj.birthDate.getDate());

๐ŸŒˆ  Tomorrow

  • ํด๋ž˜์Šค์™€ ์˜ค๋ธŒ์ ํŠธ
  • 10๊ฐ€์ง€ ๋ฐฐ์—ดํ•จ์ˆ˜
  • ๋น„๋™๊ธฐ callback
  • ํ”„๋กœ๋ฏธ์Šค
  • async & await
Comments