IT개발/JS 관련
자바스크립트(JavaScript) JSON.stringify & JSON.parse
시간기억자
2025. 1. 24. 23:58
반응형
JSON.stringify & JSON.parse
JSON.stringify와 JSON.parse는 **JavaScript 객체(Object)**와 JSON 문자열(JSON String) 간의 변환을 수행하는 메서드입니다. 이 두 메서드는 데이터를 저장하거나 전송할 때 자주 사용됩니다.
JSON.stringify
- 역할: JavaScript 객체를 JSON 문자열로 변환합니다.
- 주요 사용 시점:
- 데이터를 서버에 전송할 때
- 데이터를 로컬 저장소에 저장할 때
- 문법:
- value: 변환할 JavaScript 값(객체, 배열, 등등)
- replacer (선택): 변환 시 특정 속성을 포함하거나 제외하기 위한 함수 또는 배열
- space (선택): JSON 문자열의 들여쓰기를 위한 공백이나 탭 수
JSON.stringify(value[, replacer[, space]])
JSON.parse
- 역할: JSON 문자열을 JavaScript 객체로 변환합니다.
- 주요 사용 시점:
- 서버에서 받은 데이터를 JavaScript 객체로 변환할 때
- 로컬 저장소에 저장된 JSON 데이터를 읽어올 때
- 문법:
- text: JavaScript 객체로 변환할 JSON 문자열
- reviver (선택): 반환된 객체를 변환하기 위한 함수
JSON.parse(text[, reviver])
예제
간단한 예제 1: JSON.stringify와 JSON.parse 기본 사용법
// JavaScript 객체
const user = {
name: "Alice",
age: 25,
isActive: true,
hobbies: ["reading", "traveling"],
};
// JSON.stringify: 객체 -> JSON 문자열
const jsonString = JSON.stringify(user);
console.log(jsonString);
/*
출력:
'{"name":"Alice","age":25,"isActive":true,"hobbies":["reading","traveling"]}'
*/
// JSON.parse: JSON 문자열 -> 객체
const parsedObject = JSON.parse(jsonString);
console.log(parsedObject);
/*
출력:
{
name: "Alice",
age: 25,
isActive: true,
hobbies: ["reading", "traveling"]
}
*/
예제 2: 배열 변환
// JavaScript 배열
const fruits = ["apple", "banana", "cherry"];
// JSON.stringify: 배열 -> JSON 문자열
const jsonString = JSON.stringify(fruits);
console.log(jsonString); // '["apple","banana","cherry"]'
// JSON.parse: JSON 문자열 -> 배열
const parsedArray = JSON.parse(jsonString);
console.log(parsedArray); // ["apple", "banana", "cherry"]
예제 3: 로컬 스토리지 활용
로컬 스토리지는 문자열만 저장할 수 있기 때문에 JSON.stringify와 JSON.parse가 필요합니다.
// 저장할 객체
const settings = {
theme: "dark",
notifications: true,
};
// 로컬 스토리지에 저장
localStorage.setItem("userSettings", JSON.stringify(settings));
// 로컬 스토리지에서 가져오기
const storedSettings = localStorage.getItem("userSettings");
// JSON 문자열 -> JavaScript 객체
const parsedSettings = JSON.parse(storedSettings);
console.log(parsedSettings); // { theme: "dark", notifications: true }
세부기능
JSON.stringify의 세부 기능
1. replacer를 사용한 특정 속성 제외
const user = { name: "Alice", age: 25, isActive: true };
// age 속성을 제외하고 JSON 문자열 생성
const jsonString = JSON.stringify(user, ["name", "isActive"]);
console.log(jsonString); // '{"name":"Alice","isActive":true}'
2. space를 사용한 들여쓰기
const user = { name: "Alice", age: 25, isActive: true };
// 2칸 공백으로 들여쓰기
const jsonString = JSON.stringify(user, null, 2);
console.log(jsonString);
/*
출력:
{
"name": "Alice",
"age": 25,
"isActive": true
}
*/
JSON.parse의 세부 기능
1. reviver로 값 변환
const jsonString = '{"name":"Alice","age":25}';
// age 값을 10년 더하도록 변환
const parsedObject = JSON.parse(jsonString, (key, value) => {
if (key === "age") return value + 10;
return value;
});
console.log(parsedObject); // { name: "Alice", age: 35 }
주의사항
1. JSON 문자열은 반드시 유효한 형식이어야 합니다.
// 잘못된 JSON 문자열 (따옴표가 잘못됨)
const invalidJson = "{name: 'Alice'}"; // 오류 발생
const obj = JSON.parse(invalidJson); // SyntaxError
2. undefined와 함수는 변환되지 않습니다.
const obj = {
name: "Alice",
age: undefined,
greet: function () {
console.log("Hello");
},
};
console.log(JSON.stringify(obj)); // '{"name":"Alice"}'
정리
- JSON.stringify: 객체/배열 → JSON 문자열로 변환
- JSON.parse: JSON 문자열 → 객체/배열로 변환
- 두 메서드는 데이터를 저장하거나 서버와 통신할 때 매우 유용하며, 유효한 JSON 형식과 적절한 옵션 사용이 중요합니다.
반응형