JavaScript

JavaScript JSON object method

lshjju 2026. 6. 1. 11:33

자바스크립트와 데이터를 주고받는 네트워크 통신, 파일 저장 등에서 빼놓을 수 없는 표준 데이터 포맷이 바로 JSON(JavaScript Object Notation)입니다.

자바스크립트의 내장 JSON 객체는 이 데이터를 처리하기 위해 딱 2가지 핵심 메소드를 제공합니다.

하나는 자바스크립트 객체를 문자열로 바꾸는 것이고, 다른 하나는 그 반대로 바꾸는 것입니다.

1. JSON.stringify() : 객체를 문자열로 변환 (직렬화)

자바스크립트의 객체나 배열을 JSON 형태의 문자열로 변환할 때 사용합니다.

  • 언제 쓰나요?: 브라우저에서 서버로 데이터를 보낼 때, 혹은 로컬 스토리지(localStorage)에 데이터를 저장할 때 문자열 형태로 변환해야 하므로 반드시 이 메소드를 거쳐야 합니다.
const user = {
  name: "Kim",
  age: 26,
  skills: ["HTML", "CSS", "JS"]
};

// 자바스크립트 객체를 JSON 문자열로 변환
const jsonString = JSON.stringify(user);

console.log(typeof jsonString); // "string"
console.log(jsonString); 
// 출력 결과: '{"name":"Kim","age":26,"skills":["HTML","CSS","JS"]}'

💡 꿀팁: 가독성 좋게 줄 바꿈하여 출력하기

JSON.stringify()의 세 번째 인자로 공백 수(보통 2 또는 4)를 주면, 한 줄로 보기 힘들었던 JSON 데이터가 예쁘게 들여쓰기된 문자열로 변환됩니다.

const prettyJson = JSON.stringify(user, null, 2);
console.log(prettyJson);
/*
{
  "name": "Kim",
  "age": 26,
  "skills": [
    "HTML",
    "CSS",
    "JS"
  ]
}
*/

2. JSON.parse() : 문자열을 객체로 변환 (역직렬화)

서버로부터 받은 JSON 문자열을 자바스크립트가 읽을 수 있는 실제 객체나 배열로 변환할 때 사용합니다.

  • 언제 쓰나요?: fetch API를 통해 서버에서 받아온 데이터나 localStorage.getItem()으로 꺼내온 문자열 데이터를 다시 데이터로서 접근하고 활용하고 싶을 때 사용합니다.
const dataFromServer = '{"name":"Lee","role":"developer"}';

// JSON 문자열을 실제 자바스크립트 객체로 변환
const userObj = JSON.parse(dataFromServer);

console.log(typeof userObj); // "object"
console.log(userObj.name);   // "Lee" (이제 마침표 연산자로 프로퍼티 접근 가능)

⚠️ JSON 객체 사용 시 주의할 점 및 예외 현상

JSON.stringify()는 모든 자바스크립트 데이터를 완벽하게 변환하지는 못합니다.

JSON 표준 규격에 맞지 않는 값들은 변환 과정에서 누락되거나 변형됩니다.

  • 함수(Function) 및 undefined: 객체 내부의 메소드(함수)나 값이 undefined인 프로퍼티는 변환 과정에서 완전히 삭제됩니다.
  • Date 객체: JSON.stringify()를 거치면 Date 객체는 ISO 문자열 포맷으로 강제 변환됩니다. 이를 다시 JSON.parse()로 되돌려도 자동으로 Date 객체로 부활하지 않고 그대로 문자열로 남습니다.
const specialObj = {
  action: () => console.log("hello"), // 함수
  data: undefined,                    // undefined
  now: new Date()                     // Date 객체
};

const result = JSON.stringify(specialObj);
console.log(result); 
// 출력 결과: '{"now":"2026-06-01T02:32:26.000Z"}' (함수와 undefined는 증발함)

📋 JSON 메소드 핵심 요약

메소드 역할 입력 타입 출력 타입 주요 용도
JSON.stringify() 객체를 JSON 문자열로 변환 Object / Array String 서버로 데이터 전송, 로컬 스토리지 저장
JSON.parse() JSON 문자열을 객체로 변환 String Object / Array 서버 데이터 수신 후 데이터 가공 및 파싱

학습 정리

  • 데이터를 보낼 때는 stringify(문자열화), 데이터를 받아서 쓸 때는 parse(분석) 규칙만 기억하면 흔히 발생하는 데이터 포맷 에러를 예방할 수 있습니다.
  • 가끔 깊은 복사(Deep Copy)를 편하게 하기 위해 JSON.parse(JSON.stringify(obj)) 기법을 쓰기도 하지만, 앞서 말한 함수나 undefined 증발 현상이 있으므로 주의해야 합니다.

 

서버와의 통신에 핵심이 되는 JSON 객체를 정복하셨습니다!


'JavaScript' 카테고리의 다른 글

JavaScript window object method  (0) 2026.06.01
JavaScript and LocalStorage and JSON  (0) 2026.06.01
JavaScript String object method  (0) 2026.06.01
JavaScript Math object method  (1) 2026.06.01
JavaScript Array method  (0) 2026.05.29