FormatArc의 한국어 JSON 포맷터 화면에서 정렬해 표시한 JSON 결과FormatArc의 한국어 JSON 포맷터 화면에서 정렬해 표시한 JSON 결과
저자: FormatArc게시일: 2026-08-22갱신일: 2026-08-22

JSON이란 - 기본 문법·데이터 타입·활용 예시 총정리 (2026 입문)

개발을 시작하거나 API를 다루기 시작하면 가장 먼저 만나게 되는 데이터 형식이 JSON입니다. API 응답부터 에디터 설정 파일까지 곳곳에 등장하지만, 막상 "JSON이 정확히 무엇인가"를 설명하려 하면 머뭇거리게 되는 경우가 많습니다. 이 글에서는 JSON의 정의부터 기본 문법, 데이터 타입, 실제 활용 사례까지 순서대로 정리합니다.

JSON이란

JSON(JavaScript Object Notation)은 데이터를 사람과 기계 모두 읽기 쉬운 형태로 표현하기 위한 텍스트 형식입니다. 이름에 JavaScript가 들어 있지만 특정 프로그래밍 언어에 의존하지 않는 범용 형식으로, Python, Java, Go, PHP 등 주요 언어 대부분에서 다룰 수 있습니다.

원래는 JavaScript의 객체 리터럴 표기를 기반으로 탄생했습니다. 2000년대 초반에 더글러스 크락포드(Douglas Crockford)가 사양을 정리했고, 이후 IETF의 RFC 8259새 탭에서 열립니다와 Ecma International의 ECMA-404새 탭에서 열립니다로 표준화되었습니다. 두 문서는 같은 문법을 정의하므로, 한 준수 파서에서 통과한 JSON 문서는 다른 준수 파서에서도 통과합니다.

당시 지배적이던 데이터 교환 형식은 XML이었는데, 기술량이 많아 부담스러웠습니다. XML에 비해 기술량이 적고 파싱도 가벼운 JSON은 이 단순함 덕분에 웹 전반으로 빠르게 확산되었습니다.

손에 넣은 JSON을 정렬해서 읽기 쉽게 만들거나 문법이 맞는지 확인하고 싶다면 FormatArc의 JSON 포맷터에 붙여넣어 보세요. 처리는 브라우저 안에서 끝나고 입력한 데이터가 외부로 전송되는 일은 없습니다.

다른 데이터 형식과의 차이

JSON은 여러 데이터 형식 가운데 하나입니다. 비슷한 용도를 가진 XML·CSV·YAML과 비교하면 JSON의 성격이 분명해집니다.

형식주요 용도특징
JSONAPI·데이터 교환기계가 처리하기 위한 엄격한 규칙. 문법이 단순하고 빠름
XML레거시 시스템·SOAP장황하지만 스키마가 강력
CSV스프레드시트·ETL표 형식에 특화, 중첩 불가
YAML설정 파일사람이 손으로 쓰기 쉽지만 파싱이 느림

JSON이 선택되는 이유는 "기계 처리에 최적화되어 있으면서도 사람이 어렵지 않게 읽고 쓸 수 있는" 중간 지점에 있기 때문입니다. Python·Java·Go 등 주요 언어가 JSON 파서를 표준 라이브러리로 갖추고 있어서 언어를 넘나드는 상호운용에도 강한 형식입니다.

설정 파일에서 사람을 위한 메모, 즉 주석이 꼭 필요하다면 YAML이 더 잘 맞을 때가 많습니다. 두 형식은 YAML JSON 변환기로 서로 오갈 수 있습니다.

JSON 기본 문법

JSON에서 쓸 수 있는 데이터 구조는 크게 두 가지입니다.

객체

중괄호 {}로 감싸고, 키와 값의 쌍을 콜론(:)으로 구분해 나열합니다. 키는 반드시 큰따옴표로 감싼 문자열이어야 합니다.

{
  "name": "김민준",
  "age": 30,
  "city": "서울"
}

배열

대괄호 []로 감싸고, 값은 쉼표(,)로 구분해 나열합니다. 서로 다른 타입의 값을 섞을 수도 있지만, 실무에서는 같은 타입으로 맞추는 것이 일반적입니다.

["사과", "바나나", "귤"]

JSON 데이터 타입 6가지

JSON에서 다룰 수 있는 데이터 타입은 여섯 가지입니다. 자주 확인하게 되는 규칙을 표로 정리했습니다.

타입예시핵심 규칙흔한 함정
문자열(string)"hello"큰따옴표만 허용작은따옴표는 파싱 오류
숫자(number)42, 3.14정수와 소수를 구별하지 않음NaN, Infinity, 앞자리 0(007)은 거부
불리언(boolean)true, false소문자만True, TRUE, 1은 무효
nullnull소문자만None, nil은 무효
객체(object){ "key": "value" }키는 큰따옴표 문자열키 따옴표 생략은 JavaScript에서만 동작
배열(array)[1, "a", null]순서 유지, 타입 혼합 가능마지막 요소 뒤의 후행 쉼표는 거부

각 타입을 조금 더 자세히 살펴봅니다.

문자열

큰따옴표로 감쌉니다. 작은따옴표는 사용할 수 없습니다. 줄바꿈이나 탭 같은 특수 문자는 이스케이프 시퀀스(\n, \t)로 표현합니다.

{
  "greeting": "안녕하세요",
  "check": "\u2714"
}

숫자

정수든 소수든 그대로 씁니다. 따옴표로 감쌀 필요가 없습니다.

42
3.14
-10

단, JSON은 NaN, Infinity, 007처럼 0으로 시작하는 수를 지원하지 않습니다. 이런 값을 넣으면 파싱 오류가 됩니다.

불리언

true 또는 false 둘 중 하나입니다. 첫 글자가 대문자인 True나 모두 대문자인 TRUE는 JSON에서는 무효이므로 주의하세요.

true

null

값이 존재하지 않음을 나타냅니다. 이쪽도 모두 소문자로 씁니다.

null

객체와 배열의 중첩

객체 안에 배열을 넣거나, 배열 안에 객체를 넣는 식으로 자유롭게 중첩할 수 있습니다.

{
  "user": {
    "name": "김민준",
    "hobbies": ["독서", "러닝"],
    "address": {
      "city": "서울",
      "district": "강남구"
    }
  }
}

이 유연한 중첩 구조가 JSON이 복잡한 데이터를 표현할 수 있는 이유 중 하나입니다.

JSON이 활용되는 분야

Web API 데이터 교환

REST API와 GraphQL의 응답 형식으로서 JSON은 사실상 표준입니다. 브라우저의 fetch 함수로 서버에서 데이터를 가져오면 대부분 JSON으로 돌아옵니다.

{
  "status": "ok",
  "data": {
    "id": 1,
    "title": "첫 번째 게시물"
  }
}

설정 파일

Node.js 프로젝트의 package.json, TypeScript의 tsconfig.json, VS Code의 settings.json처럼 개발 도구의 설정 파일에도 널리 쓰입니다. 사람이 읽고 쓰기 쉬우면서 프로그램이 파싱하기 쉽다는 두 요건을 모두 충족하기 때문입니다.

데이터 저장·로그

NoSQL 데이터베이스(MongoDB 등)는 데이터를 JSON과 비슷한 형식(BSON)으로 저장합니다. 로그를 구조화할 때도 JSON Lines(한 줄에 JSON 객체 하나)를 쓰는 사례가 늘고 있습니다.

표 형식 데이터와의 변환

스프레드시트에서 CSV로 내보낸 데이터를 API나 애플리케이션에서 쓰기 위해 JSON으로 바꾸는 경우도 있습니다. CSV와 JSON은 구조가 다르므로 두 형식을 모두 이해해 두면 편리합니다. CSV JSON 변환기를 사용하면 표 데이터를 그대로 JSON 구조로 옮길 수 있습니다. CSV의 기본 개념과 구조에 대해서는 CSV 파일이란에서 자세히 다루고 있습니다.

JSON을 다룰 때 알아 두면 좋은 제약

JSON은 단순한 형식이지만 몇 가지 제약이 있습니다. 손으로 직접 작성할 때 자주 걸리는 부분이므로 미리 알아 두면 좋습니다.

주석을 쓸 수 없다

JSON에는 주석 문법이 존재하지 않습니다. //, /* */, # 어느 것도 유효하지 않습니다. 파일에 메모를 남기고 싶다면 "_comment" 같은 더미 키를 추가하는 우회 방법을 쓰거나, 주석을 지원하는 형식(YAML, JSONC)으로 옮겨야 합니다.

후행 쉼표를 쓸 수 없다

마지막 요소 뒤에 붙은 쉼표는 JavaScript에서는 허용되지만 JSON에서는 파싱 오류의 원인이 됩니다.

{
  "a": 1,
  "b": 2,
}

"b": 2 뒤의 쉼표를 삭제해야 합니다.

키에는 반드시 큰따옴표

JavaScript에서 { name: "김민준" }처럼 키의 따옴표를 생략해도 동작하지만, JSON에서는 { "name": "김민준" }처럼 반드시 큰따옴표로 감싸야 합니다. 작은따옴표도 사용할 수 없습니다.

최상위에는 값이 하나만

JSON 문서의 최상위에는 객체나 배열 하나만 둘 수 있습니다. 객체 두 개를 나란히 놓는 것은 올바른 JSON이 아니며, 여러 값을 다루고 싶다면 배열로 묶어야 합니다.

포맷이 무너진 JSON은 읽기 어렵고 구문 오류의 원인도 됩니다. JSON 포맷터를 사용하면 클릭 한 번으로 정렬과 검증을 끝낼 수 있으므로 작업 효율이 올라갑니다. JSON의 구체적인 작성 규칙은 JSON 작성법 가이드에서 자세히 다루고 있습니다. 또한 YAML과의 차이가 궁금하다면 YAML과 JSON의 차이를 참고하세요. JSON을 보기 좋게 정렬하는 방법은 JSON 정렬 방법에 정리되어 있습니다.

FormatArc의 한국어 JSON 포맷터 화면에서 정렬해 표시한 JSON 결과FormatArc의 한국어 JSON 포맷터 화면에서 정렬해 표시한 JSON 결과

자주 묻는 질문

JSON 파일은 어떻게 열어 보나요?

JSON 파일은 텍스트 편집기라면 무엇이든 열 수 있습니다. VS Code 같은 에디터는 문법에 맞게 색을 입혀 보여 줍니다. 구조까지 정리된 상태로 확인하고 싶다면 브라우저에서 동작하는 JSON 포맷터에 파일 내용을 붙여넣으세요. 설치 없이 정렬과 검증을 동시에 끝낼 수 있습니다.

JSON에서 주석을 쓸 수 있나요?

표준 JSON은 주석을 지원하지 않습니다. ///* */를 쓰면 Unexpected token 오류로 실패합니다. VS Code 설정 파일처럼 주석이 필요한 환경에서는 JSONC(JSON with Comments)라는 확장 형식을 사용합니다.

JSON과 JavaScript 객체는 같은 건가요?

다릅니다. JavaScript 객체는 메모리 안의 살아 있는 데이터 구조이고, JSON은 언제나 텍스트입니다. 그래서 JavaScript 객체에서 가능한 일(키 따옴표 생략, 함수 정의, undefined 값, 후행 쉼표)이 JSON에서는 대부분 금지되어 있습니다. 텍스트를 객체로 바꾸는 것이 JSON.parse이고, 객체를 텍스트로 바꾸는 것이 JSON.stringify입니다.

JSON과 XML 중 무엇을 써야 하나요?

새로 만드는 웹 API라면 JSON이 기본 선택입니다. XML은 여전히 레거시 시스템, SOAP 기반 인터페이스, 일부 문서 형식에서 쓰이지만, 웹에서 데이터를 주고받는 용도로는 JSON이 간결하고 다루기 쉽습니다.

JSON을 예쁘게 정렬하려면?

코드로 처리한다면 JavaScript의 JSON.stringify(data, null, 2), Python의 json.dumps(data, indent=2)처럼 직렬화 함수에 들여쓰기 옵션을 넣으면 됩니다. 코드 없이 빠르게 확인하고 싶다면 JSON 포맷터에 붙여넣는 것이 가장 빠릅니다.

마무리

  • JSON은 언어에 의존하지 않는 경량 데이터 교환 형식입니다
  • 객체({})와 배열([])이라는 두 구조가 기본입니다
  • 데이터 타입은 문자열·숫자·불리언·null·객체·배열의 여섯 가지입니다
  • Web API 응답과 설정 파일에서 폭넓게 쓰입니다
  • 주석 불가, 후행 쉼표 금지 같은 제약이 있습니다
  • 정렬과 문법 검증에는 JSON 포맷터가 편리합니다