JSON

kirin.logยท2021๋…„ 4์›” 7์ผ
0
post-custom-banner

๐ŸŽƒ JSON (JavaScript Object Notation)

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ(์ €์žฅ ํ˜น์€ ์ „์†กํ•  ๋•Œ) ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋Ÿ‰์˜ DATA ๊ตํ™˜ ํ˜•์‹
  • Javascript์—์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œํ˜„์‹์„ ์˜๋ฏธ.
    โ— JSON์€ ๋ฐ์ดํ„ฐ ํฌ๋งท์ผ ๋ฟ์ด๋ฉฐ, ์–ด๋– ํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ•๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ๋ฒ•๋„ ์•„๋‹Œ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํ‘œํ˜„ ๋ฐฉ๋ฒ•์ผ ๋ฟ์ด๋‹ค.

๐Ÿฅ JSON ํŠน์ง•

  • Server์™€ Client ๊ฐ„์˜ ๊ต๋ฅ˜์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ JSON ํ˜•์‹์˜ ๋ฌธ์„œ๋ฅผ ์‰ฝ๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ ์ด ์žˆ๋‹ค.
  • JSON ๋ฌธ์„œ ํ˜•์‹์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ํ˜•์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค.
    (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•(key:value pairs) ๊ณผ ์•„์ฃผ ์œ ์‚ฌํ•˜๋‹ค)
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฌธ๋ฒ•๊ณผ ๊ต‰์žฅํžˆ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ…์ŠคํŠธ ํ˜•์‹์ผ ๋ฟ์ด๋‹ค.
  • ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ด์šฉํ•ด์„œ๋„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ํŠน์ • ์–ธ์–ด์— ์ข…์†๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ JSON ํฌ๋งท์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ธ๋“ค๋ง ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

JSON.stringify โ€“ ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.
JSON.parse โ€“ JSON์„ ๊ฐ์ฒด๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

// 1) Object to JSON  >> stringify API

// Boolean ํ˜•ํƒœ JSON์œผ๋กœ ๋ณ€ํ™˜
let json = JSON.stringify(true);
console.log(json)  // true

// Array ํ˜•ํƒœ JSON์œผ๋กœ ๋ณ€ํ™˜
let json = JSON.stringify( ['a', 'b', 'c'] );
console.log(json)  // ["a", "b", "c"] 

// String ํ˜•ํƒœ JSON์œผ๋กœ ๋ณ€ํ™˜
let json = JSON.stringify('text');
console.log(json)  // "text"

// Object ํ˜•ํƒœ JSON์œผ๋กœ ๋ณ€ํ™˜
const rabbit = {
    name: 'nana',
    color: 'white',
    size: null,
    birthDate: new Date(),
    jump: () => {
    	console.log(`${name} can jump!`);
    },
};

let json = JSON.stringify(rabbit);
console.log(json)  
// {"name": "nana", "color": "white", "size": null, "birthDate": "2021-04-07T20:22.670Z" }
// jump function ํ˜•ํƒœ๋Š”  JSON์œผ๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค.

// ์ค‘์ฒฉ ๊ฐ์ฒด๋„ JSON์œผ๋กœ ๋ณ€ํ™˜
const meetup = {
  title: "Conference",
  room: {
    number: 23,
    participants: ["john", "ann"]
  }
};

let json = JSON.stringify(meetup);
console.log(json)
//{
//  "title":"Conference",
//  "room":{"number":23,"participants":["john","ann"]},
// }



// 2) JSON to Object  >> parse API

let json = JSON.stringify(rabbit);  // JSON์œผ๋กœ ๋ณ€ํ™˜
let obj = JSON.parse(json);   // ๋‹ค์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜
console.log(obj)  

๐Ÿฅ JSON ๋ฌธ๋ฒ•

  • JSON ํ˜•์‹์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ key / value๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ key๊ฐ’์ด๋‚˜ ๋ฌธ์ž์—ด์€ ํ•ญ์ƒ ์Œ๋”ฐ์˜ดํ‘œ("")๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‘œ๊ธฐํ•ด์•ผํ•œ๋‹ค.
  • ๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ์˜ ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์›ํ•˜๋Š” ๋งŒํผ ์ค‘์ฒฉ์‹œ์ผœ์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • JSONํ˜•์‹์—์„œ๋Š” null, number, string, array, object, boolean์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    (symbol ์ด๋‚˜ function ํ˜•ํƒœ๋‚˜ ๊ฐ’์ด undefined์ธ ํ”„๋กœํผํ‹ฐ๋Š” ์•ˆ๋œ๋‹ค)
{
  "employees": [
    {
      "name": "Yerim",
      "lastName": "Ko"
    },
    {
      "name": "Ajin",
      "lastName": "Woo"
    },
    {
      "name": "Bokja",
      "lastName": "Park"
    } 
  ]
}
profile
boma91@gmail.com
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€