
// JSON ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ ์ํ JS ์ฌ์ฉ๋ฒ
// [1] : ๋ฐ์ดํฐ
const person = [
`{"name":"์ด์์ ","age":20,"nationality":"๋ํ๋ฏผ๊ตญ"}`,
{"name":"๋งฅ์๋","age":30,"nationality":"๋ฏธ๊ตญ"},
{"name":"์๋ฆฌ์๋ฒ ์ค","age":40,"nationality":"์๊ตญ"},
{"name":"์๋ค๋ฅดํฌ","age":50,"nationality":"ํ๋์ค"},
];
console.log(typeof person); // object
console.log(typeof person[0]); // string
console.log(typeof person[1]); // object
์ฒซ๋ฒ์งธ ์์๋ฅผ ์์ ๋ฐ์ดํ๋ก ๊ฐ์ธ๋ฉด string ๋จ

// [2] : ์ถ๋ ฅ
console.log('------------------------------------------');
// ์ด๋ฆ๋ง ์ถ๋ ฅ
// undefined
console.log(person[0].name + " " + person[0].age + " " + person[0].nationality);
// ๋งฅ์๋ 30 ๋ฏธ๊ตญ
console.log(person[1].name + " " + person[1].age + " " + person[1].nationality);

// [3] : ๋ฐ๋ณต
console.log('------------------------------------------์ ๊ฐ์ฐ์ฐ์');
console.log(...person); // ์ ๊ฐ์ฐ์ฐ์
console.log([...person]); // __proto__ --> Array
console.log({...person}); // __proto__ --> Object
console.log([...person].length); // 4
console.log([...person][1].name); // ๋งฅ์๋
console.log({...person}[1].name); // ๋งฅ์๋
const str1 = "korea";
console.log(...str1);
console.log([...str1]); // __proto__ --> Array
console.log({...str1}); // __proto__ --> Object

// [4] : ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด --> for .. of, ...(์ ๊ฐ ์ฐ์ฐ์)
console.log('------------------------------------------for ... of');
for(let ele of person) { // person ์ด iterable (๋ฐ๋ณต๊ฐ๋ฅํ) ๊ฐ์ฒด์ฌ์ผํจ.
console.log(ele);
}
for(let ele in person) { // 0, 1, 2, 3 ์ธ๋ฑ์ค๊ฐ ์ฐจ๋ก๋๋ก ์ถ๋ ฅ๋จ
console.log(ele);
}
for(let ele of person[0]) { // person์ ๋ฐฐ์ด์ด๊ณ person[0]์ string์ด๋ผ iterable
console.log(ele);
}
for(let ele of person[1]) { // person์ ๋ฐฐ์ด์ด์ง๋ง person[1]์ ๋ฐ๋ณต ๋ถ๊ฐ๋ฅํ ๊ฐ์ฒด๋ผ์ ์๋ฌ๋จ
console.log(ele);
}



for(let k in person[1]) {
console.log(k); // name, age, nationality
}

`person`์ `๊ฐ์ฒด`๋ค์ ์์๋ก ๊ฐ์ง๋ `๋ฐฐ์ด`์ด๊ณ `person[1]`์ `๋ ๋ฒ์งธ ๊ฐ์ฒด`์ธ { name: "๋งฅ์๋", age: 30, nationality: "๋ฏธ๊ตญ" }์ ๊ฐ๋ฆฌํจ๋ค. `for...in` ๋ฃจํ๋ ๊ฐ์ฒด์ `์์ฑ๋ช (ํค)`์ ๋ฐ๋ณตํ๋ค. `person[1]` ๊ฐ์ฒด์๋ `name`, `age`, `nationality`๋ผ๋ ์์ฑ๋ค์ด ์กด์ฌํ๋ฏ๋ก, for...in ๋ฃจํ๋ ์ด `์์ฑ๋ช ๋ค`์ ์ฐจ๋ก๋๋ก ๋ฐํํ๋ ๊ฒ์ด๋ค.
// [5] : ์์
console.log('------------------------------------------๋ฐฑํฑ');
person[1].name = "์ต๋ค์ธ";
person[1].age = 22;
console.log(`๋งฅ์๋์ ์ด๋ฆ์ด ${person[1].name}์ผ๋ก, ๋์ด๊ฐ ${person[1].age}์ด๋ก ์์ ๋จ.`);

์ค์ฒฉ๋ JSON ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ
// ํ ๊ถ์ ๋์์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ JSON ๋ฐ์ดํฐ์์
// ํด๋น๋์๊ฐ ์ํด์๋ ์นดํ
๊ณ ๋ฆฌ ์ถ๋ ฅํ๊ธฐ



์คํํ๋ฉด

// [7] JSON ๋ฐ์ดํฐ ๊ฐ์ฒด์ ๋ฌธ์์ด๋ก ๋ณํํ๊ธฐ
// JSON.parse(),JSON.stringfy() --> classify: ๋ถ๋ฅํ๋ค, ๊ตฌ๋ถํ๋ค
// JSON.parse(jsonText) -> JSON ํ์์ ํ
์คํธ --> ๊ฐ์ฒด๋ก ๋ณํ.
// JSON ๋ฌธ์์ด
let jsonText = '{"name":"์นด๋ฆฌ๋","age":22,"nationality":"๋ํ๋ฏผ๊ตญ"}';
console.log("๋ณํ ์ --> " + typeof(jsonText)); // string
console.log(jsonText.name); // undefined
// JSON ๋ฌธ์์ด์ JavaScript ๊ฐ์ฒด๋ก ๋ณํ
let parsedObject = JSON.parse(jsonText);
console.log("๋ณํ ํ --> " + typeof(parsedObject)); // object
console.log(parsedObject.name); // ์นด๋ฆฌ๋

'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

// JSON ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ ์ํ JS ์ฌ์ฉ๋ฒ // [1] : ๋ฐ์ดํฐ const person = [ `{"name":"์ด์์ ","age":20,"nationality":"๋ํ๋ฏผ๊ตญ"}`, {"name":"๋งฅ์๋","age":30,"nationality":"๋ฏธ๊ตญ"}, {"name":"์๋ฆฌ์๋ฒ ์ค","age":40,"nationality":"์๊ตญ"}, {"name":"์๋ค๋ฅดํฌ","age":50,"nationality":"ํ๋์ค"}, ]; console.log(typeof person); // object console.log(typeof person[0]); // string console.log(typeof person[1]); // object
์ฒซ๋ฒ์งธ ์์๋ฅผ ์์ ๋ฐ์ดํ๋ก ๊ฐ์ธ๋ฉด string ๋จ

// [2] : ์ถ๋ ฅ console.log('------------------------------------------'); // ์ด๋ฆ๋ง ์ถ๋ ฅ // undefined console.log(person[0].name + " " + person[0].age + " " + person[0].nationality); // ๋งฅ์๋ 30 ๋ฏธ๊ตญ console.log(person[1].name + " " + person[1].age + " " + person[1].nationality);

// [3] : ๋ฐ๋ณต console.log('------------------------------------------์ ๊ฐ์ฐ์ฐ์'); console.log(...person); // ์ ๊ฐ์ฐ์ฐ์ console.log([...person]); // __proto__ --> Array console.log({...person}); // __proto__ --> Object console.log([...person].length); // 4 console.log([...person][1].name); // ๋งฅ์๋ console.log({...person}[1].name); // ๋งฅ์๋ const str1 = "korea"; console.log(...str1); console.log([...str1]); // __proto__ --> Array console.log({...str1}); // __proto__ --> Object

// [4] : ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด --> for .. of, ...(์ ๊ฐ ์ฐ์ฐ์) console.log('------------------------------------------for ... of'); for(let ele of person) { // person ์ด iterable (๋ฐ๋ณต๊ฐ๋ฅํ) ๊ฐ์ฒด์ฌ์ผํจ. console.log(ele); } for(let ele in person) { // 0, 1, 2, 3 ์ธ๋ฑ์ค๊ฐ ์ฐจ๋ก๋๋ก ์ถ๋ ฅ๋จ console.log(ele); } for(let ele of person[0]) { // person์ ๋ฐฐ์ด์ด๊ณ person[0]์ string์ด๋ผ iterable console.log(ele); } for(let ele of person[1]) { // person์ ๋ฐฐ์ด์ด์ง๋ง person[1]์ ๋ฐ๋ณต ๋ถ๊ฐ๋ฅํ ๊ฐ์ฒด๋ผ์ ์๋ฌ๋จ console.log(ele); }



for(let k in person[1]) { console.log(k); // name, age, nationality }

person
์ ๊ฐ์ฒด
๋ค์ ์์๋ก ๊ฐ์ง๋ ๋ฐฐ์ด
์ด๊ณ person[1]
์ ๋ ๋ฒ์งธ ๊ฐ์ฒด
์ธ { name: "๋งฅ์๋", age: 30, nationality: "๋ฏธ๊ตญ" }์ ๊ฐ๋ฆฌํจ๋ค. for...in
๋ฃจํ๋ ๊ฐ์ฒด์ ์์ฑ๋ช
(ํค)
์ ๋ฐ๋ณตํ๋ค. person[1]
๊ฐ์ฒด์๋ name
, age
, nationality
๋ผ๋ ์์ฑ๋ค์ด ์กด์ฌํ๋ฏ๋ก, for...in ๋ฃจํ๋ ์ด ์์ฑ๋ช
๋ค
์ ์ฐจ๋ก๋๋ก ๋ฐํํ๋ ๊ฒ์ด๋ค.
// [5] : ์์ console.log('------------------------------------------๋ฐฑํฑ'); person[1].name = "์ต๋ค์ธ"; person[1].age = 22; console.log(`๋งฅ์๋์ ์ด๋ฆ์ด ${person[1].name}์ผ๋ก, ๋์ด๊ฐ ${person[1].age}์ด๋ก ์์ ๋จ.`);

์ค์ฒฉ๋ JSON ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ
// ํ ๊ถ์ ๋์์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ JSON ๋ฐ์ดํฐ์์
// ํด๋น๋์๊ฐ ์ํด์๋ ์นดํ
๊ณ ๋ฆฌ ์ถ๋ ฅํ๊ธฐ



์คํํ๋ฉด

// [7] JSON ๋ฐ์ดํฐ ๊ฐ์ฒด์ ๋ฌธ์์ด๋ก ๋ณํํ๊ธฐ // JSON.parse(),JSON.stringfy() --> classify: ๋ถ๋ฅํ๋ค, ๊ตฌ๋ถํ๋ค // JSON.parse(jsonText) -> JSON ํ์์ ํ
์คํธ --> ๊ฐ์ฒด๋ก ๋ณํ. // JSON ๋ฌธ์์ด let jsonText = '{"name":"์นด๋ฆฌ๋","age":22,"nationality":"๋ํ๋ฏผ๊ตญ"}'; console.log("๋ณํ ์ --> " + typeof(jsonText)); // string console.log(jsonText.name); // undefined // JSON ๋ฌธ์์ด์ JavaScript ๊ฐ์ฒด๋ก ๋ณํ let parsedObject = JSON.parse(jsonText); console.log("๋ณํ ํ --> " + typeof(parsedObject)); // object console.log(parsedObject.name); // ์นด๋ฆฌ๋
