JSON

2026. 6. 25. 22:30·BI&Programming-Tools/File Formats

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
'BI&Programming-Tools/File Formats' 카테고리의 다른 글
  • [바이오 빅데이터 파일 포맷] H5AD
  • [바이오 빅데이터 파일 포맷] BigWig
  • [바이오 빅데이터 파일 포맷] BED
  • [바이오 빅데이터 파일 포맷] GFF3 / GTF
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190) N
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28) N
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4) N
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬연습
    R기초
    fasta
    bioinformatics
    생물정보학
    파이썬
    wgs
    분자생물학
    파이썬기초
    데이터분석
    리눅스기초
    유전체분석
    FASTQ
    GATK
    통계
    코딩테스트
    ngs
    파일포맷
    R
    리눅스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
JSON
상단으로

티스토리툴바