์๋ฐ์คํฌ๋ฆฝํธ ์๋ฆฌ์ฆ:
[JavaScript] ๐JSON, ์ด๋๊น์ง ์์๋ณด๊ณ ์ค์
จ์ด์?
[JavaScript] ๋๊ธฐ์ ์ธ(Synchronous) ์ฝ๋ฐฑ(callback)ํจ์๋ ์์๊น?
[JavaScript] ๊ธฐ๋ค๋ฆฌ๋ ์์๊ฒ ๋ณต์ด ์๋๋, Promise
[JavaScript] ๋น๋๊ธฐ ์ด๊ธฐ๋ ๋ฒ, Async์ Await.
JSON. ์น๊ฐ๋ฐ์ ๊ด์ฌ์ด ์๋ค๋ฉด ๋ง์ด๋ ๋ณด๊ณ ๋ค์์ ๊ฑฐ๋ค. ์ ๋ง ์ด๋๊ฐ๋ ๋ณด์ด๋ JSON, ๊ทธ๊ฒ ๋๋์ฒด ๋ญ๊น?
JSON์ JavaScript Object Notation์ ์ค์๋ง์ด๋ค. Notation, ๊ทธ๋๊น ์๋ฐ์คํฌ๋ฆฝํธ์ Object ํ์ ์ ๋ฎ์ ํ๋์ ํ์์ด๋ค. ๋ฎ์์ผ๋๊น ๋ณํํ๊ธฐ๋ ์ฝ๋ค.
๋๊ฒ ์ ์ฉํ ํ์์ด๋ผ๋ ์ ์ด ์ค์ํ๋ค. ์ธ๊ฐ์ด ์ฝ๊ฑฐ๋ ์ฐ๊ธฐ ์ฝ๋ค. ๊ธฐ๊ณ๊ฐ ํ์ฑํ๊ฑฐ๋ ๋ง๋ค์ด๋ด๊ธฐ๋ ์ฝ๋ค.
์ฝ๊ฒ ๋งํด ์ ๋ณด๋ฅผ ๋ด๊ธฐ ์ฝ๊ณ , ์ ์กํ๊ธฐ๋ ํธํ๋ค. ๊ทธ๋์ ์จ๊ฐ ๊ณณ์ ๋ค ์ฐ์ธ๋ค.
๋ค์์ ํํ๊ณ ๋ฒ์ญ API์ ์๋ต ์์๋ค.
{
"message": {
"@type": "response",
"@service": "naverservice.nmt.proxy",
"@version": "1.0.0",
"result": {
"srcLangType":"ko",
"tarLangType":"en",
"translatedText": "tea"
}
}
}
๋ฒ์ญํด๋ฌ๋ผ๋ ์์ฒญ์ ๋ณด๋ด๋ฉด ์์๊ฐ์ ์๋ต์ด ๋์์จ๋ค.
๊ทธ๋ ๋ค. JSON ๊ทธ ๋
์์ด๋ค.
๋ค์์ npm์ package.json์ด๋ค.
> npm init --yes
Wrote to /home/monatheoctocat/my_package/package.json:
{
"name": "my_package",
"description": "",
"version": "1.0.0",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/monatheoctocat/my_package.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/monatheoctocat/my_package/issues"
},
"homepage": "https://github.com/monatheoctocat/my_package"
}
JSON์ ๋ค์ํ ์ ๋ณด๋ฅผ ์ฝ๊ฒ ๋ด์ ์ ์๊ณ , JSON์ผ๋ก๋ถํฐ ์ ๋ณด๋ฅผ ์ถ์ถํด์ค๊ธฐ๋ ์ฌ์ ๋ค์ํ ๊ณณ์ ๋ง์ด ์ฐ์ธ๋ค.
JSON์ด ๋ญ๋๊ณ ? JSON์ string ํํ๋ก ์กด์ฌํ๋ค.
๊ทธ๋๊น JavaScript์ Object์ ํ์์ ๋น๋ฆฐ string์ผ ๋ฟ์ด๋ค. ์ ์กํ๊ธฐ ์ํด์๋ string ํํ์ฌ์ผ ํ๋ค.
(์..์๊ฒ ๋ค..!)
๊ทธ๋ผ ์ด string์ ์ด๋์ ๊ฐ ๋ฐ์์๋ค๊ณ ์น์. ์ด๊ฑธ๋ก ๋ญ ํ ์ ์์๊น? ์ ๋ณด๊ฐ ๋ด๊ฒจ์๋ string์ด๋๊น ์ ๋ณด์ ์ ๊ทผํด์ผ ํ ๊ฑฐ๋ค. ์ ๋ณด์ ์ด๋ป๊ฒ ์ ๊ทผํ ์ ์์๊น? ๋งค๋ฒ console.log
๋ก ์ฐ์ด์ ๋์ผ๋ก ํ์ธํด์ผ ํ ๊น?
์๋๋ฉด string์ ๋ฌธ์๋ฅผ ํ๋ํ๋ ๋๋ฉด์ key์ value๋ฅผ ๊ตฌ๋ถํด๋ด๋ ์ฝ๋๋ฅผ ์์ฑํ ์๋ ์์ ๊ฑฐ๋ค.
๋คํํ ์ด string์ Object๊ณผ ๋ฎ์๊ธฐ ๋๋ฌธ์ Object๋ก ๋ณํํ๊ธฐ๋ ์ฝ๋ค.
JavaScript๋ JSON Object๋ฅผ ์ ๊ณตํ๋ค.
๋งค๋ฒ ๋ถ๋ฌ์ ๋ง๋ค๊ฑฐ๋ ํ๋ Object๋ ์๋๋ค.
JavaScript์์๋ ๋๋คํ ์๋ฅผ ๋ง๋ค์ด๋ด๊ณ ์ถ์ ๋, ์๋์ฒ๋ผ Math.random()
์ ์ด๋ค.
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
0๋ถํฐ max-1๊น์ง ์ค์์ ๋๋คํ ์๋ฅผ ๊ณจ๋ผ์ฃผ๋ ํจ์๋ค.
์ด์จ๋ , ์ด๋ ์ฐ๋ Math Object๊ฐ์ ์ญํ ์ ํ๋ ๊ฒ JSON Object์ด๋ค.
JSON string์ Objectํํ๋ก ์ฝ์ด์ค๊ณ ์ถ์ ๋๋ JSON Object ์์ ๋ด์ฅ๋ method์ธ parse()
๋ฅผ ์คํํ๋ฉด ๋๋ค.
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);
console.log(typeof obj);
// output: "object"
json
์ด๋ผ๋ string์ ๋ง๋ค์ด์ JSON.parse()
์ ๋๊ฒจ์คฌ๋๋ Object๊ฐ ๋์๋ค!
๋ฐ๋๋ก ์ด๋ฏธ ์กด์ฌํ๋ Object๋ฅผ ์ด๋๊ฐ์ ์ ์กํ๊ณ ์ถ๋ค๋ฉด string์ผ๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค. ์ด๋๋ JSON.stringfy()
๋ฅผ ์คํํ๋ค.
console.log(JSON.stringify({ x: 5, y: 6 }));
// expected output: "{"x":5,"y":6}"
Object๊ฐ string์ด ๋์๋ค!
์ด๋๋ ์ง ์ฐ์ด๋ JSON์ ๋ํด ์์๋ดค๋ค. ์๊ฐ๋ณด๋ค ์ด๋ ต์ง ์์ง๋ง, ์น๊ฐ๋ฐ์์ ํญ์ ๋ฑ์ฅํ๋ ๊ฐ๋ ์ธ๋งํผ, ๋ง์ด ์จ์ ์น์ํด์ง๋ ๊ฒ๋ ์ค์ํ๋ค.
๐ฐ๊ทธ๋ฐ ์๋ฏธ์์ ๋ค์ ํฌ์คํ ์์๋ JSON๊ณผ API๋ฅผ ํ์ฉํ ๊ฐ๋จํ ํํ ๋ฆฌ์ผ์ ๋ง๋ค์ด๋ณผ๊น ์๊ฐ ์ค์ด๋ค.๐ง๐ปโ๐ณ
์๋ฐ์คํฌ๋ฆฝํธ ์๋ฆฌ์ฆ:
[JavaScript] ๐JSON, ์ด๋๊น์ง ์์๋ณด๊ณ ์ค์
จ์ด์?
[JavaScript] ๋๊ธฐ์ ์ธ(Synchronous) ์ฝ๋ฐฑ(callback)ํจ์๋ ์์๊น?
[JavaScript] ๊ธฐ๋ค๋ฆฌ๋ ์์๊ฒ ๋ณต์ด ์๋๋, Promise
[JavaScript] ๋น๋๊ธฐ ์ด๊ธฐ๋ ๋ฒ, Async์ Await.
์ฐธ๊ณ
mdn docs