2025. 8. 26. 20:09ใFront-end/JavaScript

๋ชฉ์ฐจ
1. JSON
2. JSON.stringify
3. JSON.parse
1. JSON
JSON(JavaScript Object Notation)์ ๊ฐ, ๊ฐ์ฒด๋ฅผ ๋ํ๋ด์ฃผ๋ ๋ฒ์ฉ ํฌ๋งท์ด๋ค.
๊ฐ์ฒด๋ฅผ ์ด๋๊ฐ๋ก ์ ์กํ๊ฑฐ๋ ์ถ๋ ฅํ ๋, ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ์ ํํด์ผํ๋ค.
์ด ์์ ์ ๊ฐ์ฒด๊ฐ ๋ฌ๋ผ์ง ๋๋ง๋ค toString()์ผ๋ก ํ๊ธฐ์๋ ๋๋ฌด ๊น๋ค๋ก์ด๋ฐ, ์ด๋ด ๋ JSON ๊ด๋ จ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์์ ํ ์ ์๋ค.
- JSON.stringify : ๊ฐ์ฒด → JSON ๋ณํ
- JSON.parse : JSON → ๊ฐ์ฒด ๋ณํ
2. JSON.stringify
JSON.stringify() ๋ฉ์๋์ ์ธ์๋ก ๊ฐ์ฒด/์์๊ฐ์ ๋๊ธฐ๋ฉด ๋ณํ๋ ๋ฌธ์์ด์ ์ป์ ์ ์๋ค.
์ด ๋ฌธ์์ด์ JSON-encoded, serialized, stringified, marshalled ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฌธ์์ด๋ก ๋ณํ๋ ๊ฐ์ฒด๋ ๋คํธ์ํฌ๋ก ์ ์กํ๊ฑฐ๋, ์ ์ฅ์์ ์ ์ฅํ ์ ์๋ค.
- ๋ฌธ์์ด์ ํฐ๋ฐ์ดํ๋ก ๊ฐ์ธ์ผ ํ๋ค.
- ๊ฐ์ฒด ํ๋กํผํฐ ์ด๋ฆ์ ํฐ๋ฐ์ดํ๋ก ๊ฐ์ธ์ผ ํ๋ค.
1. JSON.stringify ๋ฌธ๋ฒ
let json = JSON.stringify(value, [replacer, space]);
- value : ์ธ์ฝ๋ฉ ํ๋ ค๋ ๊ฐ
- replacer : JSON์ผ๋ก ์ธ์ฝ๋ฉํ๊ธธ ์ํ๋ ๋ฐฐ์ด/๋งคํ ํจ์
- space : ์์ ๋ณ๊ฒฝ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ๊ณต๋ฐฑ ๋ฌธ์ ์
๋๋ค์์ ๊ฒฝ์ฐ, ์ธ์๋ฅผ ํ ๊ฐ๋ง ๋๊ฒจ์ ์ฌ์ฉํ๋,
์ ํ ํ๋ก์ธ์ค๋ฅผ ์ ๊ตํ๊ฒ ์กฐ์ ํ๋ ค๋ฉด ๋ ๋ฒ์งธ ์ธ์(๋ฐฐ์ด)์ ์ฌ์ฉํด์ผํ๋ค.
โ ์ธ์ ํ๋๋ง ๋๊ธฐ๋ ๊ฒฝ์ฐ
let student = {
name: 'John',
age: 30,
isAdmin: false,
courses: ['html', 'css', 'js'],
wife: null
};
let json = JSON.stringify(student);
console.log(typeof json); // string
console.log(json);
/*
{
"name": "John",
"age": 30,
"isAdmin": false,
"courses": ["html", "css", "js"],
"wife": null
}
*/
JSON.stringify์ ๊ฐ์ฒด ํ๋๋ง ์ธ์๋ก ๋๊ฒจ์ ๋ฌธ์์ด๋ก ๋ฐ๊ฟจ๋ค.
โ ์ธ์๋ฅผ ๋ ๊ฐ ๋๊ธฐ๋ ๊ฒฝ์ฐ
JSON.stringify๋ฅผ ์ฌ์ฉํ ๋ ์ํ ์ฐธ์กฐ๊ฐ ์์ผ๋ฉด ๋ฌธ์์ด๋ก ๋ฐ๊ฟ ์ ์๋ค.
let a = { number: 23 };
let b = { string = "hi" };
a.string = b;
b.number = a;
JSON.stringify(a); // Error: Converting circular structure to JSON
์ด๋ฐ ๊ฒฝ์ฐ JSON์ผ๋ก ๋ณํํ๊ธธ ์ํ๋ ํ๋กํผํฐ๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ๋๋ฒ์งธ ์ธ์๋ก ๋๊ฒจ์ค๋ค.
let a = { thisisa: 23 };
let b = {
string: 'hi',
string2: 'hello',
arr:[{name: "bang", {name: "kim"}],
number: a
};
a.ref = b;
console.log( Json.stringify(b, ['string', 'arr']) );
// {"string":"hi","arr":[{},{}]}
console.log( JSON.stringify(b, ['string', 'string2', 'arr', 'number', 'name']);
/*
{
"string":"hi",
"string2":"hello",
"arr":[{"name":"bang"},{"name":"kim"}],
"number":{"thisisa":23}
}
*/
console.log( JSON.stringify(b, function replacer(key, value) {
console.log(`${key}: ${value}` );
return (key == 'ref') ? undefined : value;
}));
/* replacer ํจ์์์ ์ฒ๋ฆฌํ๋ key:value ์ ๋ชฉ๋ก์ ์ถ๋ ฅ
: [object Object]
string: hi
string2: hello
arr: [object Object], [object Object]
0: [object Object]
name: bang
1: [object Object]
name: kim
number: [object Object]
thisisa: 23
*/
๋ง์ง๋ง ์ถ๋ ฅ๋ฌผ์์ : [object Object]๊ฐ ๋จ๋ ์ด์ ๋ ํจ์๊ฐ ์ต์ด ํธ์ถ๋ ๋ {"":b} ํํ์ ๋ํผ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์์์ replacer ํจ์๊ฐ ๊ฐ์ฅ ์ฒ์์ผ๋ก ์ฒ๋ฆฌํ๋ (key, value) ์์์ key(๋น ๋ฌธ์์ด) : value(๋ฐํํ๋ ค๋ ๊ฐ์ฒด b)๊ฐ ๋๋ ๊ฒ์ด๋ค.
3. JSON.parse
JSON.parse๋ฅผ ์ฌ์ฉํ๋ฉด JSON์ผ๋ก ์ธ์ฝ๋ฉ๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ๊ฐ์ฒด๋ก ๋์ฝ๋ฉ ํ ์ ์๋ค.
1. JSON.parse ๋ฌธ๋ฒ
let value = JSON.parse(str, [reviver]);
- str : JSON ํ์์ ๋ฌธ์์ด
- reviver : ๋ชจ๋ (key, value) ์์ ๋์์ผ๋ก ํธ์ถ๋๋ function(key, value) ํํ์ ํจ์๋ก, ๊ฐ์ ๋ณ๊ฒฝ์ํฌ ์ ์์
// ๋ฌธ์์ด๋ก ๋ณํ๋ ๋ฐฐ์ด
let numbers = "[0, 1, 2, 3]";
numbers = JSON.parse(numbers);
console.log( numbers[1] ); // 1
์ค์ฒฉ ๊ฐ์ฒด์ ์ฌ์ฉํ ์๋ ์๋ค.
let userData = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }';
let user = JSON.parse(userData);
alert( user.friends[1] ); // 1
โ ๋๋ฒ์งธ ์ธ์ reviver ์ฌ์ฉ ์์
์ ์ก๋ฐ์ ๊ฐ์ฒด ๋ฌธ์์ด์ JSON.parse๋ก ๊ฐ์ฒด๋ก ๋ค์ ๋ณํํ ๋,
๊ทธ๋ฅ JSON.parse(str)๊ณผ ๊ฐ์ด ์์ฑํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';
let meetup = JSON.parse(str);
alert( meetup.date.getDate() );
meetup.date์ ๊ฐ์ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๋๋ฒ์งธ ์ธ์๋ก ํจ์๋ฅผ ์ ๋ฌํ๊ณ , ํจ์๋ฅผ ๊ตฌํํด์ ๊ฐ์ฒด๋ก ๋ฐํํ๋๋ก ํ ์ ์๋ค.
let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';
let meetup = JSON.parse(str, function(key, value) {
if (key == 'date') return new Date(value);
return value;
});
alert( meetup.date.getDate() );
// ์ค์ฒฉ ๊ฐ์ฒด ์ ์ฉ
let schedule = `{
"meetups": [
{"title":"Conference","date":"2017-11-30T12:00:00.000Z"},
{"title":"Birthday","date":"2017-04-18T12:00:00.000Z"}
]
}`;
schedule = JSON.parse(schedule, function(key, value) {
if (key == 'date') return new Date(value);
return value;
});
alert( schedule.meetups[1].date.getDate() );
์ฐธ๊ณ
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| B23 : iterable ๊ฐ์ฒด (1) | 2025.08.29 |
|---|---|
| ์ต์ ๋ ์ฒด์ด๋ ?. (1) | 2025.08.29 |
| B26: ๊ตฌ์กฐ ๋ถํด ํ ๋น : object๋ฅผ ๋ณ์๋ก ๋ถํดํ๊ธฐ (0) | 2025.08.26 |
| B25 : ๊ฐ์ฒด ๋ฉ์๋ Object.keys, values, entries (0) | 2025.08.26 |
| B25 : ์ํฌ๋งต๊ณผ ์ํฌ์ (weak) ๊ฐ์ฒด (0) | 2025.08.26 |
GitHub