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으로 변환할 수 없다. 해당 값들이 포함된 객체 비교시에는 예상과 다르게 동작할 수 있다.