JSON이란?
JavaScript Object Notation의 약자입니다. 데이터를 텍스트 형태로 저장하고 교환하기 위한 형식입니다.
이름에 JavaScript가 들어가지만 언어에 종속되지 않아서 Python, R, Java 등 거의 모든 언어에서 사용합니다.
사람이 읽기 쉽고, 기계가 파싱하기도 쉬운 구조라서 API 응답, 설정 파일, 데이터 저장 등 다양한 곳에서 씁니다.
JSON의 기본 구조
JSON은 키-값 쌍으로 이루어진 구조입니다.
파이썬의 딕셔너리와 매우 비슷합니다.
{
"name": "BRCA1",
"chromosome": "17",
"length": 81189,
"is_coding": true,
"aliases": ["BRCA1", "IRIS", "PSCP"],
"location": {
"start": 43044295,
"end": 43125483
},
"notes": null
}
JSON이 지원하는 데이터 타입
JSON은 아래 6가지 타입만 지원합니다.
| JSON 타입 | 예시 | Python에 대응하는 타입 |
| string | "BRCA1" | str |
| number | 81189, 3.14 | int, float |
| boolean | true, false | True, False |
| null | null | None |
| array | ["a", "b", "c"] | list |
| object | {"key": "value"} | dict |
주의할 점이 몇 가지 있습니다.
- 문자열은 반드시 큰따옴표(") 를 씁니다. 작은따옴표는 JSON 표준에서 허용하지 않습니다.
- boolean은 true / false (소문자)입니다. Python의 True / False와 다릅니다.
- null은 소문자입니다. Python의 None에 해당합니다.
- 숫자는 정수와 실수를 모두 지원하지만, 날짜/시간 타입은 없습니다. 날짜는 보통 문자열("2024-01-01")로 저장합니다.
JSON 구조 형태
Object (객체)
중괄호 {}로 감싸는 키-값 쌍의 집합입니다.
키는 반드시 문자열이어야 합니다.
{
"sample_id": "S001",
"organism": "Homo sapiens",
"coverage": 30.5
}
Array (배열)
대괄호 []로 감싸는 순서 있는 값의 목록입니다.
서로 다른 타입이 섞여 있어도 됩니다.
["ATCG", 42, true, null]
실제로는 같은 타입의 값을 담는 경우가 대부분입니다.
["sample_1", "sample_2", "sample_3"]
중첩 구조
Object 안에 Array, Array 안에 Object 등 자유롭게 중첩할 수 있습니다.
실제 데이터는 대부분 중첩 구조를 가집니다.
{
"experiment": "RNA-seq",
"samples": [
{
"id": "S001",
"condition": "control",
"replicates": 3
},
{
"id": "S002",
"condition": "treatment",
"replicates": 3
}
]
}
JSON vs 다른 형식 비교
| JSON | CSV | YAML | XML | |
| 가독성 | 좋음 | 좋음 | 매우 좋음 | 나쁨 |
| 중첩 구조 | 지원 | 미지원 | 지원 | 지원 |
| 용량 | 보통 | 작음 | 보통 | 큼 |
| 주요 용도 | API, 설정, 데이터 교환 | 표 형태 데이터 | 설정 파일 | 레거시 시스템 |
CSV는 표 형태의 단순한 데이터에 적합하고, JSON은 계층 구조가 있는 데이터에 적합합니다.
생물정보학에서는 파이프라인 설정 파일, API 응답 데이터, 메타데이터 저장 등에 JSON을 자주 씁니다.
JSON 파일 규칙
- 확장자는 .json입니다.
- 인코딩은 UTF-8을 씁니다.
- 키는 문자열이어야 하고, 같은 Object 안에서 중복 키는 피합니다 (표준상 허용되지만 동작이 구현마다 다릅니다).
- 마지막 항목 뒤에 쉼표를 쓰면 안 됩니다. (trailing comma 불허)
{
"a": 1,
"b": 2, ← 이 쉼표는 오류입니다
}
- 주석을 지원하지 않습니다. 설정 파일에 주석이 필요하면 JSONC나 YAML을 쓰거나, "_comment" 같은 키를 관례적으로 사용하기도 합니다.
Python에서 JSON 다루기
Python의 json 모듈로 JSON을 읽고 쓸 수 있습니다.
자세한 사용법은 다음 파일에서 다룹니다.
import json
# JSON 문자열 → Python 객체
data = json.loads('{"name": "BRCA1", "length": 81189}')
print(data["name"]) # BRCA1
print(type(data)) # <class 'dict'>
# Python 객체 → JSON 문자열
json_str = json.dumps(data)
print(json_str) # {"name": "BRCA1", "length": 81189}
JSON의 타입은 Python으로 읽어올 때 자동으로 변환됩니다.
| JSON | Python |
| object | dict |
| array | list |
| string | str |
| number (int) | int |
| number (float) | float |
| true / false | True / False |
| null | None |
'BI&Programming-Tools > File Formats' 카테고리의 다른 글
| [바이오 빅데이터 파일 포맷] H5AD (0) | 2026.06.21 |
|---|---|
| [바이오 빅데이터 파일 포맷] BigWig (0) | 2026.06.21 |
| [바이오 빅데이터 파일 포맷] BED (0) | 2026.06.20 |
| [바이오 빅데이터 파일 포맷] GFF3 / GTF (0) | 2026.06.20 |
| [바이오 빅데이터 파일 포맷] gVCF (0) | 2026.06.20 |
