JSON
JSON(제이슨)은 데이터를 "이름"과 "값"의 짝으로 적는 글자 형식이에요. API 답·설정 파일·AI 결과처럼 프로그램이 주고받는 데이터 대부분이 이 모양이에요.
목차 보기
JSON(제이슨)은 데이터를 "이름"과 "값"의 짝으로 적는 글자 형식이에요. 가게 메뉴판에 "아메리카노 4,000원"이라고 이름과 가격을 나란히 적듯, 프로그램끼리 알아보기 쉽게 정해 둔 받아쓰기 규칙이에요.
글 서순명(솔리드그루 이사 · 퓨쳐인프라 운영) · 2026-10-29 작성 · 예시 코드는 2026-10-29 Windows 11(파이썬 3.12.8·Node v24.15.0)에서 직접 실행
3줄 요약
- JSON은 JavaScript Object Notation의 줄임말이지만, 파이썬·자바 등 거의 모든 언어가 읽고 써요.
- API 답, 설정 파일, AI가 돌려주는 결과처럼 프로그램이 주고받는 데이터 대부분이 이 모양이에요.
- 규칙이 엄격해서 쉼표 하나, 작은따옴표 하나만 틀려도 통째로 못 읽어요.
JSON은 어떻게 생겼나요?
중괄호 { } 안에 "이름": 값 짝을 쉼표로 이어 적어요. 여러 개를 나열할 땐 대괄호 [ ]를 써요. 아래는 2026-10-29에 파이썬으로 직접 만든 카페 메뉴 예시예요.
{
"가게": "솔커피",
"메뉴": [
{
"이름": "아메리카노",
"가격": 4000
}
],
"영업중": true,
"휴무일": null
}
JSON에 넣을 수 있는 값은 여섯 가지뿐이에요(RFC 8259).
| 값 종류 | 쓰는 법 | 위 예시에서 |
|---|---|---|
| 문자열 | 큰따옴표로 감싸요 | "솔커피" |
| 숫자 | 따옴표·쉼표 없이 숫자만 | 4000 |
| 참·거짓 | 소문자 true / false | true |
| 빈 값 | 소문자 null | null |
| 객체 | { "이름": 값, … } | 메뉴 한 개 |
| 배열 | [ 값, 값, … ] | 메뉴 목록 |
json.org는 JSON을 사람도 기계도 읽기 쉬운 가벼운 데이터 교환 형식이라고 소개해요. 파일 확장자는 .json 이에요.
JSON은 어디에 쓰이나요?
날씨·결제·AI 서비스의 API는 대부분 결과를 JSON으로 보내요. package.json 같은 앱 설정 파일도 JSON이에요. AI 답을 "제목·요약·태그" 칸으로 나눠 받을 때도 써요. MongoDB 같은 데이터베이스는 JSON을 닮은 문서로 데이터를 담아요.
XML·CSV와는 뭐가 달라요?
| 구분 | JSON | XML | CSV |
|---|---|---|---|
| 생김새 | {"이름": "라떼"} | <이름>라떼</이름> | 이름,가격 한 줄씩 |
| 길이 | 짧아요 | 태그를 열고 닫아 길어요 | 더 짧아요 |
| 안에 안을 넣기 | 돼요 | 돼요 | 어려워요 |
| 주로 쓰는 곳 | 웹 API, 설정, AI 결과 | 오래된 시스템, 문서 형식 | 엑셀 표 주고받기 |
줄과 칸만 있으면 CSV, 안에 안을 겹쳐 담아야 하면 JSON이 맞아요.
직접 해 보면 어떻게 나오나요?
2026-10-29 Windows 11 PC에서 파이썬 3.12.8로 직접 실행한 결과예요. 같은 메뉴 데이터를 JSON 글자로 바꿔 봤어요.
$ cat j.py (앞부분)
import json
menu = {"가게": "솔커피", "메뉴": [{"이름": "아메리카노", "가격": 4000}], "영업중": True, "휴무일": None}
print(json.dumps(menu, ensure_ascii=False))
print(json.dumps(menu))
$ python j.py (앞 두 줄)
{"가게": "솔커피", "메뉴": [{"이름": "아메리카노", "가격": 4000}], "영업중": true, "휴무일": null}
{"가게": "솔커피", "메뉴": [{"이름": "아메리카노", "가격": 4000}], "영업중": true, "휴무일": null}
- 파이썬의 True·None이 JSON에서는 소문자 true·null로 바뀌었어요. 언어마다 적는 법이 달라도 JSON은 하나로 맞춰요.
- 둘째 줄의 가 은 "가"를 번호로 적은 거예요. 깨진 게 아니라 옵션(ensure_ascii=False)을 빼서 그래요. 읽으면 다시 한글로 돌아와요.
JSON 오류는 왜 나요?
사람 눈엔 멀쩡해 보여도 규칙을 하나만 어기면 못 읽어요. 자주 틀리는 세 가지를 파이썬과 Node.js(v24.15.0)에 똑같이 넣어 봤어요.
파이썬 json.loads
{"이름": "라떼",} → Expecting property name enclosed in double quotes: line 1 column 13 (char 12)
{'이름': '라떼'} → Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
{"가격": 4,500} → Expecting property name enclosed in double quotes: line 1 column 10 (char 9)
Node.js JSON.parse
{"이름": "라떼",} → Expected double-quoted property name in JSON at position 12 (line 1 column 13)
{'이름': '라떼'} → Expected property name or '}' in JSON at position 1 (line 1 column 2)
{"가격": 4,500} → Expected double-quoted property name in JSON at position 9 (line 1 column 10)
| 틀린 곳 | 왜 안 되나 | 고친 모양 |
|---|---|---|
| 마지막 값 뒤 쉼표 | 쉼표 뒤엔 다음 이름이 와야 해요 | {"이름": "라떼"} |
| 작은따옴표 | JSON 글자는 큰따옴표만 돼요 | {"이름": "라떼"} |
| 4,500 처럼 숫자에 쉼표 | 쉼표를 "다음 칸" 표시로 읽어요 | {"가격": 4500} |
오류 문구의 column(몇 번째 글자) 숫자가 틀린 자리를 가리켜요. 세 번째는 쉼표 뒤 500을 다음 이름으로 읽으려다 실패해서 엉뚱한 문구가 나왔어요. 고친 모양으로 바꾸면 세 줄 모두 읽혀요.
반대 방향에서도 함정이 있어요. 자바스크립트에서 JSON으로 바꾸면 일부 값이 조용히 바뀌어요.
$ node -e "console.log(JSON.stringify({a:1,b:undefined,c:new Date(0)}))"
{"a":1,"c":"1970-01-01T00:00:00.000Z"}
값이 없는(undefined) b 칸은 아예 사라졌고, 날짜는 글자로 바뀌었어요. JSON에는 날짜라는 값 종류가 없어서예요.
AI 답을 JSON으로 받을 땐 뭘 조심해요?
AI는 JSON을 달라고 해도 앞뒤에 ```json 같은 표시(코드 울타리)를 붙여 보낼 때가 있어요. 그 모양 그대로면 프로그램이 못 읽어요. 아래는 AI 답처럼 꾸민 예시 글자로 같은 날 직접 돌려 본 결과예요.
$ python -X utf8 fence.py
그대로 읽기 → Expecting value: line 1 column 1 (char 0)
울타리 뗀 뒤 → {'요약': '오늘 매출 12만 원', '점수': 4}
첫 글자부터 JSON이 아니라서 1번째 글자에서 멈췄어요. 표시를 떼니 바로 읽혔어요. 클로드 코드로 AI 기능을 만들 때 아래처럼 부탁하면 이런 사고를 막아요.
자주 하는 오해와 주의할 점
- "JSON은 자바스크립트에서만 쓴다" — 이름만 자바스크립트에서 왔어요. 파이썬·자바·PHP 모두 기본 기능으로 읽어요.
- "JSON 안에 메모를 남겨도 된다" — 표준 JSON에는 주석 문법이 없어요. // 메모를 넣으면 오류가 나요.
- "가 이 보이면 한글이 깨졌다" — 번호로 적어 둔 것뿐이에요. 화면에 그대로 보인다면 읽는 쪽 코드를 고쳐야 해요.
- "비밀번호를 JSON 설정 파일에 적어도 된다" — 설정 파일은 저장소에 같이 올라가기 쉬워요. 비밀값은 .env 에 따로 둬요(API 키 보관법).
퓨쳐인프라에서는 어떻게 쓰이나요?
퓨쳐인프라 REST API(https://futureinfra.ai/v1)도 답을 JSON으로 보내요. 같은 날 열쇠 없이 불러 본 답의 머리말과 내용이에요.
$ curl -s -D - https://futureinfra.ai/v1/me -o /dev/null | grep -i -E "^HTTP|content-type"
HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
$ curl -s https://futureinfra.ai/v1/me
{"error":"not_authenticated"}
application/json 은 "이 답은 JSON이에요"라는 이름표예요. 실패한 답도 error 칸에 이유를 적어 줘서, 프로그램이 그 칸만 읽고 다음 행동을 정해요. 주소와 GET·POST 같은 방법은 REST API 글에 있어요. AI 라우터도 OpenAI 호환 API라 질문과 답을 JSON으로 주고받아요. 바이브코딩으로 AI 기능을 붙일 때 위 오류 표를 옆에 두면 덜 헤매요.
JSON으로 주고받는 AI 기능, 키 하나로 붙여 보기
AI 라우터 열어 보기가입하면 2,000원 크레딧 · 카드 등록 없이 · AI 모델 300종 넘게(2026-10-29 사이트 기준)
자주 묻는 질문
JSON 파일은 어떻게 열어요?
글자 파일이라 메모장으로도 열려요. 줄이 길게 붙어 있으면 VS Code 같은 편집기에서 '문서 서식'을 누르거나 브라우저로 열면 들여쓰기 된 모양으로 보여요.
JSON 파싱이 뭐예요?
JSON 글자를 읽어 프로그램이 쓰는 값(객체·목록)으로 바꾸는 일이에요. 파이썬은 json.loads, 자바스크립트는 JSON.parse 가 이 일을 해요. 반대로 값을 JSON 글자로 바꾸는 건 직렬화라고 해요.
JSON과 자바스크립트 객체는 같은 거예요?
닮았지만 달라요. 자바스크립트 객체는 이름에 따옴표를 안 써도 되고 함수나 undefined 도 넣을 수 있어요. JSON은 이름에 큰따옴표가 꼭 있어야 하고 여섯 가지 값만 넣을 수 있어요.
JSON 파일 크기에 제한이 있어요?
형식 자체에는 크기 제한이 없어요. 다만 API나 서버가 한 번에 받는 크기를 따로 정해 두는 경우가 많아서, 아주 큰 데이터는 나눠 보내요.
관련 용어
- API — JSON으로 답을 주고받는 프로그램 창구
- REST API — 주소와 방법으로 JSON을 주고받는 규칙
- API 키 — JSON 설정 파일에 적으면 안 되는 비밀값
- 자바스크립트 — JSON 이름이 나온 언어
- MongoDB — JSON을 닮은 문서로 데이터를 담는 DB
- 작성: 서순명(솔리드그루 이사 · 퓨쳐인프라 — 국내 IDC 에서 클라우드 서버·앱 호스팅·AI API 를 운영) · 작성일 2026-10-29
- 운영사: 솔리드그루 · 사업자등록번호 875-44-00335 · 서울특별시 구로구 디지털로29길 38, 7층 707호 · 전화 02-6933-6229 · support@futureinfra.ai · 고객센터 · 이용약관
- 한계: 오류 문구는 2026-10-29 파이썬 3.12.8·Node v24.15.0 기준이라 판이 바뀌면 문장이 조금 달라질 수 있어요. AI 답 예시는 실제 AI 답이 아니라 같은 모양으로 꾸민 글자예요.
- 이해관계: 퓨쳐인프라(솔리드그루) 블로그예요. 글 안에 자사 REST API·AI 라우터 안내가 있어요.
연관 서비스
많이 본 글
-
블로그
무료 도메인 사이트 추천 2026 — 내도메인.한국·DuckDNS 발급 방법
내도메인.한국·DuckDNS 처럼 계속 무료인 주소 10곳을 11월 3일 서울에서 다시 재고(6곳 6ms 안), 발급 순서·구글·네이버 무료 주소·'첫해 무료'의 2년째 값까지 정리했어요. -
블로그
도메인 구매 사이트 추천 2026 — 가비아·후이즈 등 15곳 갱신·이전비 비교
같은 .co.kr 도 등록업체 15곳의 3년 값이 3.8만~8.6만 원이에요(11월 3일 KRNIC 표). 갱신가·이전비·해외 업체 조건, 11월 인상 뒤 가비아 실제 화면, 구매처 확인과 기관이전까지 정리했어요. -
블로그
클로드 MCP·Gemini MCP 연동 방법 2026, MCP 서버 9곳
클로드 MCP(데스크톱·Claude Code)와 Gemini MCP 연동(Gemini CLI·안티그래비티·Gemini 앱·API) 등 9곳의 MCP 서버 연결법을 공식 문서로 정리했어요. 원격 57ms 실측과 오류 해결까지. -
블로그
Gemini 3.9 Flash 나왔나요? 지금 최신은 3.8 Flash — 3.7과 직접 잰 속도·비용
2026년 9월 22일 기준 Gemini 3.9 Flash는 미출시입니다. 최신 3.8 Flash의 사양·가격(2027년 2배 인상)과, 3.7 Flash와 같은 과제로 직접 잰 속도·비용·JSON 형식 준수 차이를 정리했습니다. -
블로그
서버비 한 달 얼마? 방문자 10만 명도 월 3만 2천 원(2026 계산)
월 방문자 1천·1만 명은 1만 4천 원, 10만 명은 3만 2천 원이에요. 요금제별 트래픽 기본 제공량까지 넣어 다시 계산하고 AWS·카페24·가비아·네이버클라우드 값과 숨은 비용을 비교했어요(2026-10-26 확인).
댓글 0
로그인하면 댓글을 남길 수 있습니다.