JavaScript

[JavaScript]JSON(JavaScript Object Notation)์ด๋ž€?

siyuning 2022. 8. 31. 19:38

๐ŸŒ™JSON์ด๋ž€?

Javascript ๊ฐ์ฒด ๋ฌธ๋ฒ•์œผ๋กœ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž ๊ธฐ๋ฐ˜์˜ ํ‘œ์ค€ ํฌ๋งท.

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉ(์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์—ฌ ํ‘œํ˜„ํ•˜๋ ค๊ฑฐ๋‚˜ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ).

๐ŸŒ™JSON๊ตฌ์กฐ

JSON์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ๋ถ€๋ถ„ ์ง‘ํ•ฉ.

๋”ฐ๋ผ์„œ JSON ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•์— ๋”ฐ๋ฅธ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ.

  • ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง
  • ์‰ผํ‘œ(,)๋กœ ๋‚˜์—ด๋จ
  • ๊ฐ์ฒด(object)๋Š” ์ค‘๊ด„ํ˜ธ({})๋กœ ๋‘˜๋Ÿฌ์Œ“์•„ ํ‘œํ˜„
  • ๋ฐฐ์—ด(array)์€ ๋Œ€๊ด„ํ˜ธ([])๋กœ ๋‘˜๋Ÿฌ์Œ“์•„ ํ‘œํ˜„

๐ŸŒ™JSON ๋ฐ์ดํ„ฐ

  • JSON ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ
    ์ด๋Ÿฌํ•œ JSON ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ์ด๋ฆ„, ์ฝœ๋ก (:), ๊ฐ’์˜ ์ˆœ์„œ๋กœ ๊ตฌ์„ฑ.
    "๋ฐ์ดํ„ฐ์ด๋ฆ„": ๊ฐ’
  • ex)๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„์ด "name"์ด๊ณ , ๊ฐ’์€ "์‹๋นต"์ด๋ผ๋Š” ๋ฌธ์ž์—ด์„ ๊ฐ–๋Š” JSON ๋ฐ์ดํ„ฐ.
    "name": "์‹๋นต”
  • ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„์€ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, ํฐ๋”ฐ์˜ดํ‘œ("")์™€ ํ•จ๊ป˜ ์ž…๋ ฅํ•ด์•ผํ•จ.

๐ŸŒ™JSON ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…(datatype)

๋ฐ์ดํ„ฐ์˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํƒ€์ž…์„ ์ œ๊ณต

  1. ์ˆซ์ž(number)
  2. ๋ฌธ์ž์—ด(string)
  3. ๋ถˆ๋ฆฌ์–ธ(boolean)
  4. ๊ฐ์ฒด(object)
  5. ๋ฐฐ์—ด(array)
  6. null

๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž์˜ ์ข…๋ฅ˜

  1. ์ •์ˆ˜(integer)
  2. ์‹ค์ˆ˜(fraction)
  3. ์ง€์ˆ˜(exponent)

*8์ง„์ˆ˜๋‚˜ 16์ง„์ˆ˜ ๋“ฑ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ œ๊ณตX


๐ŸŒ™JSON ๊ฐ์ฒด

JSON ๊ฐ์ฒด๋Š” ์ค‘๊ด„ํ˜ธ({})๋กœ ๋‘˜๋Ÿฌ์Œ“์•„ ํ‘œํ˜„.

๋˜ํ•œ, ์‰ผํ‘œ(,)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœํผํ‹ฐ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ.

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

๊ฐ์ฒด(object)

๋ฐ์ดํ„ฐ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ํ•œ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ์˜ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ง‘ํ•ฉ์„ ์˜๋ฏธ.

์ค‘๊ด„ํ˜ธ({})๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ์Œ.

๊ฐ์ฒด์— ์ €์žฅ๋˜๋Š” ํ”„๋กœํผํ‹ฐ(property)๋Š” ๋ฐ์ดํ„ฐ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ํ•œ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง.

์‰ผํ‘œ(,)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœํผํ‹ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ. ์ด๋•Œ ํ”„๋กœํผํ‹ฐ์˜ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„์€ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ("")๋ฅผ ์‚ฌ์šฉํ•จ.

๊ฐ์ฒด ์•ˆ์˜ ๊ฐ์ฒด

๋ฐ์ดํ„ฐ ์ด๋ฆ„๊ณผ ๋Œ€์‘๋˜๋Š” ๊ฐ’์œผ๋กœ ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ถˆ๋ฆฌ์–ธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋˜ ๋‹ค๋ฅธ ๊ฐ์ฒด๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์Œ. ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ๊ฐ์ฒด๋ผ๋ฉด ๊ฐ์ฒด ์•ˆ์— ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋˜๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ํ˜•์„ฑ๋จ.

ex)๊ฐ€์žฅ ์ƒ์œ„ ๊ณ„์ธต์˜ ๋ฐ์ดํ„ฐ ์ด๋ฆ„์€ "dog", ๋ฐ์ดํ„ฐ๊ฐ’์œผ๋กœ ๋‹ค์„ฏ ๊ฐœ์˜ ๋˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง.
"owner" ๊ฐ์ฒด๋Š” "ownerName"๊ณผ "phone"์ด๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง.

{
    "dog": {
        "name": "์‹๋นต",
        "family": "์›ฐ์‹œ์ฝ”๊ธฐ",
        "age": 1,
        "weight": 2.14,
        "owner": {
            "ownerName": "ํ™๊ธธ๋™",
            "phone": "01012345678"
        }
    }
}

๐ŸŒ™JSON ๋ฐฐ์—ด

JSON ๋ฐฐ์—ด์€ ๋Œ€๊ด„ํ˜ธ([])๋กœ ๋‘˜๋Ÿฌ์Œ“์•„ ํ‘œํ˜„.

๋˜ํ•œ, ์‰ผํ‘œ(,)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ JSON ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ.

ex)๋ฐฐ์—ด์˜ ์ด๋ฆ„์ด "dog"์ด๊ณ , 3๊ฐœ์˜ JSON ๊ฐ์ฒด๋ฅผ ์š”์†Œ๋กœ ๊ฐ€์ง€๋Š” JSON ๋ฐฐ์—ด.

"dog": [
    {"name": "์‹๋นต", "family": "์›ฐ์‹œ์ฝ”๊ธฐ", "age": 1, "weight": 2.14},
    {"name": "์ฝฉ์ฝฉ", "family": "ํฌ๋ฉ”๋ผ๋‹ˆ์•ˆ", "age": 3, "weight": 2.5},
    {"name": "์ ค๋ฆฌ", "family": "ํ‘ธ๋“ค", "age": 7, "weight": 3.1}
]

๐ŸŒ™๋ฉ”์„œ๋“œ

JSON๊ฐ์ฒด๋Š” JSON์„ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ๊ฐ’์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Œ.

[JSON.parse()]

๋ฌธ์ž์—ด์„ JSON์œผ๋กœ์„œ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ , ์„ ํƒ์ ์œผ๋กœ ๋ถ„์„ ๊ฒฐ๊ณผ์˜ ๊ฐ’๊ณผ ์†์„ฑ์„ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜ํ•จ.

const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);

console.log(obj.count);
// expected output: 42

console.log(obj.result);
// expected output: true

๊ฒฐ๊ณผ

42
true

[JSON.stringify()]

์ฃผ์–ด์ง„ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” JSON ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•จ. ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ํŠน์ • ์†์„ฑ๋งŒ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐฉ์‹์œผ๋กœ ์†์„ฑ์„ ๋Œ€์ฒดํ•จ.

console.log(JSON.stringify({ x: 5, y: 6 }));
// expected output: "{"x":5,"y":6}"

console.log(JSON.stringify([new Number(3), new String('false'), new Boolean(false)]));
// expected output: "[3,"false",false]"

console.log(JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }));
// expected output: "{"x":[10,null,null,null]}"

console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// expected output: ""2006-01-02T15:04:05.000Z""

๊ฒฐ๊ณผ

'{"x":5,"y":6}'
'[3,"false",false]'
'{"x":[10,null,null,null]}'
'"2006-01-02T06:04:05.000Z"'

 

์ฐธ์กฐ

http://www.tcpschool.com/json/json_basic_structure

https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON