Javascript
JSON
Yujzu
2025. 3. 5. 10:49
JSON (JavaScript Object Notation)
: 데이터를 저장하고 전송하는 데 사용하는 경량 데이터 형식
[ JSON 데이터 예시 ]
{
"name": "Alice",
"age": 25,
"isStudent": false
}
- Key(키)는 항상 문자열
- Value(값)는 문자열, 숫자, 배열, 객체 등
[ 특징 ]
JSON 데이터는 보통 문자열(string) 형태로 저장하거나 전송한다.
JSON 문자열 = JSON 데이터를 문자 형태로 변환한 것
# JSON 메서드
1. JSON.stringify(obj)
: JavaScript 객체나 배열을 JSON 문자열로 변환하는 메서드
2. JSON.parse(str)
: JSON 문자열을 객체로 변환하는 메서드
const jsonData = {
name: "Alice",
age: 25
};
// JSON 문자열로 변환
const jsonString = JSON.stringify(jsonData);
console.log(jsonString);
// 출력: '{"name":"Alice","age":25}' (문자열!)
console.log(typeof jsonString);
// "string" (데이터가 문자열로 변함!)
# JSON.stringify() 언제 사용 할까?
1. API 요청에서 데이터를 JSON 형식으로 보내야 할 때 (문자열 형식이 필요할 때)
2. localStorage, sessionStorage에 저장할 때
- 브라우저 저장소(localStorage, sessionStorage)는 문자열만 저장 가능
3. 객체를 비교할 때 JSON.stringify()를 사용하면 깊은 비교 대신 문자열 비교 가능
JavaScript 객체나 배열을 JSON 문자열로 변환하여 비교하는 예시
const obj1 = { a: 1, b: 2}
const obj2 = { a: 1, b: 2}
console.log(JSON.stringify(obj1)===JSON.stringify(obj2)); // true
- 깊은 비교에 가까운 방식이지만, 완전한 깊은 비교는 아니다.
왜냐하면,
1. 객체의 속성의 순서가 다르면 다른 객체로 취급된다.
2. undefined, symbol, 함수등은 JSON으로 변환할 수 없다. 해당 값들이 포함된 객체 비교시에는 예상과 다르게 동작할 수 있다.