1 ๋ถ„ ์†Œ์š”

JSON? ๐Ÿ’ฏ

JSON์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„  ์•ฝ๊ฐ„์˜ ๋ฐฐ๊ฒฝ์ง€์‹์ด ํ•„์š”ํ•˜๋‹ค.

AJAX(Asynchronous JavaScript And XML), XHR(XMLHttpRequest) ๋“ฑ๊ณผ ๊ฐ™์ด XML์ด๋ž€ ๋‹จ์–ด๊ฐ€ ๋ณด์ด๋Š”๋ฐ XML์ด๋ž€ HTML๊ณผ ๊ฐ™์€ markup์–ธ์–ด ์ค‘์— ํ•˜๋‚˜์ด๋‹ค.(ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ๋‚˜ํƒ€๋ƒ„)
์ด๋Ÿฌํ•œ markup์–ธ์–ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์˜ˆ์ „์—๋Š” XML์ด ์ฃผ์˜€๋‹ค๋ฉด ์ง€๊ธˆ์€ JSON(JavaScript Object Notation)์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด์œ ๋Š” XML์€ ๋ถˆํ•„์š”ํ•œ ํƒœ๊ทธ๊ฐ€ ๋งŽ์ด ๋“ค์–ด๊ฐ€์„œ ํŒŒ์ผ์ด ์ปค์ง€๊ณ  ๊ฐ€๋…์„ฑ๋„ ์ข‹์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์š”์•ฝ : ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ์„ ํ•˜๊ธฐ์œ„ํ•ด markup์–ธ์–ด์ค‘ ํ•˜๋‚˜์ธ XML์„ ๋งŽ์ด ์ผ๋Š”๋ฐ ์ง€๊ธˆ์€ JSON์„ ์‚ฌ์šฉํ•œ๋‹ค.


์ด์ œ JSON์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์ž


JSON์ด๋ž€

  • ๋ธŒ๋ผ์šฐ์ € ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ๋ชจ๋ฐ”์ผ์—์„œ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„๋•Œ, ๋˜ ํ†ต์‹ ๋ชฉ์ ์ด์•„๋‹Œ Object๋ฅผ ํŒŒ์ผ์‹œ์Šคํ…œ์— ์ €์žฅํ• ๋•Œ๋„ ์‚ฌ์šฉ๋จ
  • ํ…์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜์—ฌ ๋งŒ๋“ค์—ˆ๊ธฐ์— ๊ฐ€๋ณ๊ณ  key์™€ value๋กœ ๊ตฌ์„ฑ๋˜์–ด ์ฝ๊ธฐ ์‰ฝ๋‹ค.
  • ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™”ํ•˜์—ฌ ์„œ๋ฒ„์™€ ์ฃผ๊ณ ๋ฐ›์„๋•Œ ์‚ฌ์šฉํ•จ
  • ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์–ธ์–ด๋‚˜ ํ”Œ๋žซํผ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


์š”์•ฝ : ํ…์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜์—ฌ key์™€ value๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๊ณ  ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๊ธฐ์œ„ํ•œ markup์–ธ์–ด์ด๋‹ค.



JSON ์‚ฌ์šฉ๋ฐฉ๋ฒ•

interface JSON {
  parse(
    text: string,
    reviver?: (this: any, key: string, value: any) => any
  ): any; //์˜ค๋ธŒ์ ํŠธ๋กœ

  stringify(
    value: any,
    replacer?: (this: any, key: string, value: any) => any,
    space?: string | number
  ): string; //์ŠคํŠธ๋ง์œผ๋กœ

  stringify(
    value: any,
    replacer?: (number | string)[] | null,
    space?: string | number
  ): string; //์ŠคํŠธ๋ง์œผ๋กœ
}


JSON์˜ API๋Š” parse, stringify ์ด๋ ‡๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ stringify์ฒ˜๋Ÿผ ๊ฐ™์€์ด๋ฆ„์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์ •์˜๋œ๊ฒƒ์„ ์˜ค๋ฒ„๋กœ๋”ฉ(overLoading)์ด๋ผ๊ณ  ํ•œ๋‹ค.


1. Object to JSON

let person = {
  name: "jh",
  age: 28,
  tall: null,
  day: new Date(),
  canWhat() {
    console.log(`${this.name} can eat rice`);
  },
};

JSON.stringify(person); // {"name":"jh","age":28,"tall":null,"day":"๋Œ€์ถฉ์‹œ๊ฐ„๋“ค"}

JSON.stringify(person, ["name"]); // {"name":"jh"}

JSON.stringify(person, (key, value) => {
  console.log(key, value);
}); // ํ•œ๋ฒˆํ•ด๋ณด์…ˆ


JSON์€ ํ•จ์ˆ˜๋‚˜ ์‹ฌ๋ฒŒ์€ ๋‚˜ํƒ€๋‚ด์ง€์•Š๋Š”๋‹ค. ๋˜ํ•œ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์›ํ•˜๋Š”๊ฒƒ๋งŒ ๋ณ€ํ™˜๊ฐ€๋Šฅ


2. JSON to Object

JSON.parse(person, (key, value) => {
  return key === "day" ? new Date(value) : value;
});


๋‹ค์‹œ Object ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.


์œ ์šฉํ•œ์‚ฌ์ดํŠธ : JSONํŒŒ์ผ ๋น„๊ต JSONํŒŒ์ผ ์œ ํšจํ•œ๊ฐ€

์—…๋ฐ์ดํŠธ: