[๐Ÿ’ป] Json

J-silverยท2022๋…„ 10์›” 5์ผ

web-project

๋ชฉ๋ก ๋ณด๊ธฐ
14/18

JSON( javascript Object Notation )๋ผ๋Š” ์˜๋ฏธ์˜ ์ถ•์•ฝ์–ด๋กœย ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ย ์ „์†กํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ ๋˜๋Š” ๊ฒฝ๋Ÿ‰์˜ DATA ๊ตํ™˜ ํ˜•์‹์„ ์˜๋ฏธํ•œ๋‹ค.

  • Javascript์—์„œย ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œย ์‚ฌ์šฉํ•˜๋Š” ํ‘œํ˜„์‹.
  • ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„ ๋ชจ๋‘ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐย ์šฉ๋Ÿ‰์ด ์ž‘์•„์„œ, ์ตœ๊ทผ์—๋Š” XML์„ ๋Œ€์ฒดํ•ด์„œ ๋ฐ์ดํ„ฐ ์ „์†ก์— ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐย ํฌ๋งท์ผ ๋ฟ์ด๋ฉฐย ์–ด๋– ํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ•๋„, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ๋ฒ•๋„ ์•„๋‹Œ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํ‘œํ˜„ ๋ฐฉ๋ฒ•.
  • ๋น„๋™๊ธฐํ†ต์‹ ์— ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ˜•์‹

ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ์ค€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ฆฌ๋Š”๊ฑฐ์ž„!! apiํ†ต์‹ 


๐Ÿ“Œ ๋น„๋™๊ธฐํ†ต์‹ 

์›นํŽ˜์ด์ง€ย ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ๋™๊ธฐํ™” ํ•˜์ง€ ์•Š๋Š” ํ†ต์‹  ๋ฐฉ๋ฒ•

Javascript์˜ object(๊ฐ์ฒด)์™€ ๊ฐ™์ดย  key(์†์„ฑ)-value(๊ฐ’)๊ฐ€ ๋ฌถ์—ฌ์ง„ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉ

  • ๋ฐฐ์—ด(array)๋Š” ๋ฆฌ์ŠคํŠธ ํ˜•์‹ [ ๋Œ€๊ด„ํ˜ธ ]
  • ๊ฐ์ฒด(object)๋Š” ์†์„ฑ ๊ฐ’ ์Œ์˜ ์ง‘ํ•ฉ { ์ค‘๊ด„ํ˜ธ }
  • ๋ณต์ˆ˜์˜ data๋Š” , ๋กœ ๊ตฌ๋ถ„

์ค‘๊ด„ํ˜ธ๋กœ ์‹œ์ž‘{ }ํ•ด์„œ ์•ˆ์— ์“ธ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ด๋Š”๋‹ค.

//sample.jsonํŒŒ์ผ
{
    "items":[
        {
            "name":"์œค๋ฏธ",
            "age":18
        },
        {
            "name":"์†Œ๋ฏธ",
            "age":28
        },
        {
            "name":"๋ฏธ๋ฏธ",
            "age":38
        }
    ]
}

๋ฌธ์ž์—ด์€ ํ•ญ์ƒย " "๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‘œ๊ธฐ ํ•ด์•ผ ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ์ž‘์„ฑํ›„ ์ œ์ด์ฟผ๋ฆฌ์— ์—ฐ๊ฒฐ์‹œ์ผœ์ค€๋‹ค.

๐Ÿ“Œ fetch๋ฌธ๋ฒ•

์˜›๋‚ ์—๋Š” @ajax @getJson ์„ ์ด์šฉํ•ด์„œ json์„ ๋ถˆ๋Ÿฌ์™”์ง€๋งŒ ์š”์ฆ˜์—๋Š” fetch๋ฌธ๋ฒ•๋ฅผ ์ด์šฉํ•œ๋‹ค.

fetch("./sample.json") // ๊ฐ€์ง€๊ณ ์˜ค๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ,์ฃผ์†Œ๋„ ๊ฐ€๋Šฅ
.then((response) => response.json()) //response โ†’ ๋ฐ›๋‹ค
.then((json) => {
    // console.log(json);
    // alert(json);
    const items = json.items; //json๋ฐ์ดํ„ฐ์˜ items์— ์ ‘๊ทผ
    let html = ''; //๋ณ€์ˆ˜๊ฐ€ ๋ฐ˜๋ณตํ•ด์„œ ๊ณ„์†๋“ค์–ด๊ฐˆ๊บผ๋ผ ํ•œ๋ฒˆ ์ƒ์„ฑ
    items.forEach(item => { //๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์•ผํ•จ
        html += `<li>${item.name}</li>`; //๋ณ€์ˆ˜์— ๋‹ด์Œ
   });
	//list(๋ณ€์ˆ˜)
   list = document.querySelector('.list'); ///.list ์„ ํƒํ•ด์คฌ์Œ (์ž๋ฐ”์Šคํฌ๋ฆฝ์Šค ์„ ํƒ๋ฒ•)
   list.innerHTML = html; //.list์—๋‹ค๊ฐ€ ๋„ฃ์—ˆ์Œ
});//

โœ .then((response) => response.json())

response๋ฅผ json์œผ๋กœ ๋ฐ›์•„์˜ค๊ฒ ๋‹ค

๊ผญ response.json๋กœ ๋ฐ›๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์ด json์ด๋‹ค.


โœ => (์—๋กœ์šฐํŽ‘์…˜)

์‹คํ–‰์ด๋ผ๋Š” ๋œป (์ƒˆ๋กœ๋‚˜์˜จ ๋ฌธ)
์“ฐ๋Š”๋ฒ•

( ) => { }


โœ const ๋ณ€์ˆ˜๋ช…= json.๋ณ€์ˆ˜๋ช…;

json์•ˆ์— ์žˆ๋Š” ๋ณ€์ˆ˜๋ช…์„ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค!

const๋ž€ ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜, ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜(var๋Š” ๊ฐ€๋„)

items ์— ๋Œ€ํ•œ ๋ณต์ˆ˜์„ ํƒ์žย forEach๋ฌธ์„ ์‚ฌ์šฉ



๐Ÿ“Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์„ ํƒ๋ฒ•

list = document.querySelector('.list');

  • querySelector - ๋‹จ์ผ์˜์—ญ , ์—ฌ๊ธฐ๋‹ค๊ฐ€ pํƒœ๊ทธ๋ฅผ ๋„ฃ์œผ๋ฉด ์ œ์ผ ์•ž์— ์žˆ๋Š” pํƒœ๊ทธ ํ•˜๋‚˜๋งŒ ์„ ํƒ๋จ
  • querySelectorAll - ๋ชจ๋“  ์˜์—ญ ex) ๋ชจ๋“  pํƒœ๊ทธ

๐Ÿ“Œ ๋ฐ˜๋ณต๋ฌธ

for โ†’ ๋‚ด๊ฐ€ ๋Œ๋ฆด ๊ฐฏ์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผํ•จ, ๊ท€์ฐฎ
forEach(๊ฐ๊ฐ) โ†’ ๋ฐฐ์—ด๋งŒ ์ ์–ด์ฃผ๋ฉด ๊ฐฏ์ˆ˜๋งŒํผ ์•Œ์•„์„œ ๋Œ์•„๊ฐ

  • element โ†’ json์ •๋ณด์— ๋“ค์–ด๊ฐˆ ์ˆ˜์žˆ๊ฒŒ ํ•ด์ฃผ๋Š”์• , ์•„๋ฌด์ด๋ฆ„์ด๋“  ์ƒ๊ด€์—†์Œ
๋ฐฐ์—ด์ด๋ฆ„.forEach(element => {

});

๋ฌด์กฐ๊ฑด ๊ฐ์ฒด๋กœ ์ด๋ฃจ์›Œ์ ธ์žˆ๋‹ค

  • ๊ฐ์ฒด - ์˜ค๋ธŒ์ ํŠธ
    ์‚ฌ๊ณผ = {
         ๋‹น๋„(๋ณ€์ˆ˜)
         ๋‹น๋„:10,
         ์ƒ‰:"๋นจ๊ฐ•",
         ๊ธˆ์•ก:1000
     }
    ```

โœ ๋‚ด๊ฐ€ ๋งŒ๋“  html(body)์— ๋„ฃ๊ณ ์‹ถ์„๋•Œ

let html = ''; //html์ด๋ž€ ๋ณ€์ˆ˜์ž„

human.forEach(element => {
    html += `<li>${element.name}</li>` //${๋ฐ์ดํ„ฐ}
    // console.log(html); // ํ•˜๋‚˜์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ (๊ณผ์ •์„ ๋ณผ์ˆ˜์žˆ์Œ)
});
console.log(html); // ์ตœ์ข…๊ฐ’

let โ†’ ์žฌํ• ๋‹น ๊ฐ€๋Šฅํ•จ, ๋ฐ”๋€”๊บผ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฉด let

html += `<li>aaaa</li>`
html = html + `<li>aaaa</li>`
  • += โ†’ html๋ณ€์ˆ˜์— ํƒœ๊ทธ๋ฅผ ํ•ฉ์ณ์„œ HTML์— ๋‹ด๋Š”๋‹ค.
    ๊ทธ๊ฑธ ๋ฐฐ์—ด ๊ฐœ์ˆ˜๋งŒํผ ๋Œ๋ฆฐ๋‹ค. (๋‚œ 3๋ฒˆ)

  • ๋ฌธ์ž์—ด์— ๋ณ€์ˆ˜๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ๋ฐ”๊ฟ€๋•Œ ์“ฐ๋ฉด๋จ

  • ๋ฐฑํ‹ฑ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  โ€˜ โ€™ ๋”ฐ์˜ดํ‘œ๋ฅผ ์“ด๋‹ค๋ฉด ๋ณ€์ˆ˜๋ฅผ ๋ชป์“ด๋‹ค. ๋Š์–ด์จ์•ผํ•จ โ†’ ๋ฒˆ๊ฑฐ๋กœ์›€
    โ†’ ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ๋ฒˆ์— ์‚ฌ์šฉ๊ฐ€๋Šฅ

adult = '์„ฑ์ธ'

if (element.age < 20) {
    adult = '๋ฏธ์„ฑ๋…„์ž'
}else{
    adult = '์„ฑ์ธ'
}
adult = (element.age < 20) ? '๋ฏธ์„ฑ๋…„์ž':'์„ฑ์ธ';

pet = (element.pet) ? '์žˆ๋‹ค':'์—†๋‹ค';

html += `<li>์ด๋ฆ„ : ${element.name}<br> ์„ฑ์ธ: ${adult}<br> ํŽซ: ${pet}</li>`
  • ? = ์ฐธ์ด๋ฉด
  • : = ๊ฑฐ์ง“์ด๋ฉด (์—†๋‹ค๋ฉด)

element.pet์ด ์กฐ๊ฑด๋ฌธ์ด ์—†๋Š”์ด์œ ๋Š”
โ†’ if๋ฌธ ์ž์ฒด๊ฐ€ ์ฐธ์ผ๋•Œ ์‹คํ–‰๋˜๋Š” ์• ์ž„์œผ๋กœ ์ž์ฒด๊ฐ€ ์กฐ๊ฑด๋ฌธ์ด ๋ ์ˆ˜์žˆ๋‹ค.

profile
๋‹ฌ๋ฆฌ๋Š” ๊ฑฐ๋ถ์ด

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