JSON (JavaScript Object Notation)

๐Ÿ“„ JSON (JavaScript Object Notation)

: ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๊ตํ™˜ํ•˜๊ณ  ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ…์ŠคํŠธ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ‘œ์ค€

ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋‹ค โ”

์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋„ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค โ•

์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ• ๋•Œ ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด๋„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๐Ÿ“„ JSON๊ณผ XML

XML(EXtensible Markup Language)์€ ๋ฌธ์ž๊ธฐ๋ฐ˜์˜ ๋งˆํฌ์—… ์–ธ์–ด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ ๋งŒ์„ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

๊ณตํ†ต์ 

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

์ฐจ์ด์ 

  • JSON์€ ์ข…๋ฃŒ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • JSON์˜ ๊ตฌ๋ฌธ์ด XML์˜ ๊ตฌ๋ฌธ๋ณด๋‹ค ์งง๋‹ค.
  • JSON ๋ฐ์ดํ„ฐ๊ฐ€ XML ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • XML์€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ, JSON์€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • XML์€ XML ํŒŒ์„œ๋กœ ํŒŒ์‹ฑ๋˜๊ณ , JSON์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œ์ค€ํ•จ์ˆ˜์ธ eval()ํ•จ์ˆ˜๋กœ ํŒŒ์‹ฑ๋œ๋‹ค.
// XML ์˜ˆ์ œ
<dog>
    <name>์‹๋นต</name>
    <family>์›ฐ์‹œ์ฝ”๊ธฐ<family>
    <age>1</age>
    <weight>2.14</weight>
</dog>

// JSON ์˜ˆ์ œ
{
    "name": "์‹๋นต",
    "family": "์›ฐ์‹œ์ฝ”๊ธฐ",
    "age": 1,
    "weight": 2.14
}

JSON์€ XML๋ณด๋‹ค ๋” ๋น ๋ฅธ ์ฒ˜๋ฆฌ์†๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ์ „์†ก๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์ง์ ‘ ์ธ์ฆํ•ด์•ผํ•˜๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๐Ÿ“„ JSON ๋ฌธ๋ฒ•

JSON์€ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ• ์ค‘ ๋ฆฌํ„ฐ๋Ÿด(literal)๊ณผ ํ”„๋กœํผํ‹ฐ(property)๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์“ด๋‹ค.

  • ๋ฆฌํ„ฐ๋Ÿด: ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ํ•ด์„๋˜๋Š” ๊ฐ’ ์ž์ฒด ex) 12(์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด), โ€œJSONโ€(๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด), true(๋ถˆ๋ฆฌ์–ธ ๋ฆฌํ„ฐ๋Ÿด)
  • ๊ฐ์ฒด: ์ด๋ฆ„(name)๊ณผ ๊ฐ’(value)์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ(property)์˜ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ง‘ํ•ฉ
// ๋„ค์Œ์˜ ํ”„๋กœํผํ‹ฐ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ์ฒด
{
    "name": "์‹๋นต",
    "family": "์›ฐ์‹œ์ฝ”๊ธฐ",
    "age": 1,
    "weight": 2.14
}
  • JSON์—์„œ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

undefined ์™€ null

JSON์—์„œ๋Š” undefinedํƒ€์ž…์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋‹ค๋ฅด๊ฒŒ JSON์—์„œ null์€ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ“„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ JSON

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ JSON์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด 3๊ฐ€์ง€์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  1. JSON.stringify(): ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
  2. JSON.parse(text): ์ธ์ˆ˜๋กœ ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜
  3. toJSON: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Date ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ JSON ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜. Date.prototype ๊ฐ์ฒด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
// toJSON ์˜ˆ์ œ
var date = new Date(); // ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Date ๊ฐ์ฒด

var str = date.toJSON(); // Date ๊ฐ์ฒด๋ฅผ JSON ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•จ.

document.getElementById("json").innerHTML = date + "<br>";

document.getElementById("json").innerHTML += str;

์ถœ์ฒ˜

Leave a comment