BioPlayground

🧬
목록으로

JSON — 데이터를 주고받는 공용어

JSON의 구조, JSON.parse/stringify 사용법, 그리고 API 통신에서 JSON이 쓰이는 방식을 설명합니다.

입문
|
5
|
검증 완료 (2026-07)
진행률0/55 (0%)

JSON — 데이터를 주고받는 공용어

이 토픽을 마치면

JSON이 무엇인지, 왜 쓰이는지, 그리고 JavaScript에서 어떻게 다루는지 알게 됩니다.


왜 JSON인가

서버와 클라이언트가 데이터를 주고받으려면 형식을 맞춰야 합니다. 서버가 Python이고 클라이언트가 JavaScript여도 둘 다 이해할 수 있는 형식이 필요합니다.

JSON(JavaScript Object Notation)은 그 공용어입니다. 텍스트 기반이라 어떤 언어에서든 읽고 쓸 수 있습니다. 사실상 웹 API의 표준 데이터 형식입니다.


JSON의 구조

json
{
  "name": "Alice",
  "age": 25,
  "isStudent": false,
  "scores": [85, 92, 78],
  "address": {
    "city": "Seoul",
    "zip": "06000"
  },
  "phone": null
}

규칙은 단순합니다:

  • 키는 반드시 쌍따옴표로 감쌉니다 (홑따옴표 불가)
  • 값은 문자열, 숫자, boolean, 배열, 객체, null만 됩니다
  • 함수, undefined, 주석은 안 됩니다
  • 마지막 쉼표(trailing comma) 불가

JavaScript 객체와 비슷하지만, 더 엄격합니다.


JSON.stringify: 객체 → 문자열

javascript
const user = { name: "Alice", age: 25 };
const json = JSON.stringify(user);
console.log(json); // '{"name":"Alice","age":25}'
console.log(typeof json); // "string"

JavaScript 객체를 JSON 문자열로 변환합니다. 이걸 **직렬화(serialization)**라고 합니다. 서버에 데이터를 보낼 때 씁니다.

보기 좋게 출력하려면:

javascript
console.log(JSON.stringify(user, null, 2));

세 번째 인자가 들여쓰기 칸 수입니다.


JSON.parse: 문자열 → 객체

javascript
const json = '{"name":"Alice","age":25}';
const user = JSON.parse(json);
console.log(user.name); // "Alice"
console.log(typeof user); // "object"

JSON 문자열을 JavaScript 객체로 변환합니다. 이걸 **역직렬화(deserialization)**라고 합니다. 서버에서 받은 데이터를 쓸 때 필요합니다.

잘못된 JSON을 파싱하면 에러가 납니다:

javascript
JSON.parse("not json"); // SyntaxError

그래서 API 응답을 파싱할 때는 try-catch를 쓰는 게 안전합니다.


API 통신에서의 JSON

javascript
// 데이터 보내기 (POST)
await fetch("/api/users", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "Alice", age: 25 }),
});

// 데이터 받기 (GET)
const res = await fetch("/api/users/1");
const user = await res.json(); // JSON.parse를 자동으로 해줌

fetchres.json()JSON.parse를 자동으로 호출합니다. 보낼 때는 JSON.stringify로 직접 변환해야 합니다.


핵심

JSON은 텍스트 기반의 데이터 교환 형식이며 웹 API의 사실상 표준입니다. JSON.stringify로 객체를 문자열로, JSON.parse로 문자열을 객체로 변환합니다. 키는 쌍따옴표 필수, 함수와 undefined는 사용할 수 없습니다.