JSON vs JSONL: 차이점은?

JSON과 JSONL(JSON Lines) 형식을 이해하기 위한 완전 가이드 — 차이점과 각각을 사용해야 하는 시점.

최종 업데이트: 2026년 2월

빠른 비교

특성JSONJSONL (JSON Lines)
구조단일 객체 또는 배열줄당 하나의 JSON 객체
파일 확장자.json.jsonl 또는 .ndjson
파싱전체 파일을 파싱해야 함줄 단위로 파싱 가능
스트리밍어려움네이티브 지원
대용량 파일 처리메모리 집중적메모리 효율적
가독성들여쓰기로 포맷됨압축, 줄당 하나의 레코드
스키마 유효성 검사JSON Schema 지원줄별 JSON Schema
데이터 추가전체 파일을 다시 작성해야 함새 줄을 간단히 추가

JSON이란?

JSON(JavaScript Object Notation)은 사람이 읽고 쓰기 쉽고, 기계가 파싱하고 생성하기 쉬운 경량 데이터 교환 형식입니다. JavaScript의 하위 집합을 기반으로 하며 웹에서 데이터 교환의 사실상 표준이 되었습니다.

JSON 파일은 단일 JSON 값(일반적으로 객체 또는 배열)을 포함합니다. 내부의 데이터에 접근하려면 전체 파일을 하나의 단위로 파싱해야 합니다.

JSON 예제
[
{"name": "Alice", "age": 30, "city": "New York"},
{"name": "Bob", "age": 25, "city": "London"},
{"name": "Charlie", "age": 35, "city": "Tokyo"}
]

JSONL(JSON Lines)이란?

JSONL(JSON Lines)은 Newline Delimited JSON(NDJSON)으로도 알려져 있으며, 각 줄이 유효한 JSON 객체인 텍스트 형식입니다. 줄은 줄바꿈 문자(\n)로 구분됩니다. 표준 JSON과 달리 데이터를 감싸는 배열이나 객체가 없습니다.

JSONL 파일의 각 줄은 자체 포함되어 독립적으로 파싱할 수 있습니다. 이는 JSONL을 스트리밍 데이터, 로그 파일 및 전체 데이터를 메모리에 로드하지 않고 대용량 데이터셋을 처리하기에 이상적으로 만듭니다.

JSONL 예제
{"name": "Alice", "age": 30, "city": "New York"}
{"name": "Bob", "age": 25, "city": "London"}
{"name": "Charlie", "age": 35, "city": "Tokyo"}

JSON과 JSONL의 주요 차이점

1. 파일 형식 & 구조

JSON

JSON은 모든 데이터를 단일 객체 또는 배열로 감쌉니다. 파일은 전체적으로 구문적으로 유효해야 합니다 — 끝에 대괄호가 하나 빠지면 전체 파일이 무효가 됩니다.

JSONL

JSONL은 줄당 하나의 JSON 객체를 저장합니다. 각 줄은 독립적입니다 — 한 줄에 오류가 있어도 다른 줄은 여전히 파싱할 수 있습니다.

2. 파싱 & 메모리 사용

JSON

JSON은 전체 파일을 한 번에 로드하고 파싱해야 합니다. 1GB JSON 파일은 파싱에 약 1GB 이상의 메모리가 필요합니다.

JSONL

JSONL은 줄 단위로 읽고 파싱(스트리밍)할 수 있습니다. 10GB JSONL 파일이라도 한 줄씩 읽으면 최소한의 메모리로 처리할 수 있습니다.

3. 스트리밍 & 실시간 데이터

JSON

JSON은 스트리밍용으로 설계되지 않았습니다. 전체 파일 또는 응답을 받고 파싱할 때까지 데이터 처리를 시작할 수 없습니다.

JSONL

JSONL은 스트리밍에 이상적입니다. 각 줄은 수신되는 즉시 처리할 수 있어 실시간 데이터 피드, 로그 및 서버 전송 이벤트에 완벽합니다.

4. 데이터 추가 & 쓰기

JSON

JSON 배열에 데이터를 추가하려면 전체 파일을 읽고, 파싱하고, 새 요소를 추가하고, 전체 파일을 다시 작성해야 합니다.

JSONL

JSONL 파일에 추가하는 것은 끝에 새 줄을 추가하는 것만큼 간단합니다. 기존 데이터를 읽거나 수정할 필요가 없습니다. 이는 JSON의 O(n)에 비해 O(1)입니다.

5. 가독성

JSON

JSON은 들여쓰기를 사용한 예쁜 출력을 지원하여 구성 파일과 API 응답에 매우 읽기 쉽습니다.

JSONL

JSONL은 설계상 압축적입니다 — 줄당 하나의 레코드. 개별 줄을 예쁘게 출력할 수 있지만 사람이 읽기보다는 기계 처리에 최적화되어 있습니다.

JSON vs JSONL 사용 시점

JSONJSON 사용 시:
  • 구성 파일 작업 시
  • REST API 요청/응답 본문 작성 시
  • 소규모 구조화된 데이터 저장 시 (10MB 미만)
  • 데이터가 사람이 읽고 편집할 수 있어야 할 때
  • 중첩된 계층적 데이터 구조 작업 시
  • 브라우저 측 데이터 교환 시
JSONLJSONL 사용 시:
  • 대용량 데이터셋 처리 시 (100MB 이상)
  • 실시간 데이터 스트리밍 시
  • 로그 파일 및 이벤트 데이터 작성 시
  • 머신러닝 모델 학습 시 (OpenAI, Hugging Face)
  • ETL 파이프라인 및 데이터 처리 시
  • 데이터를 자주 추가할 때
  • Unix 도구(grep, awk, sed)로 데이터 처리 시

일반적인 사용 사례

머신러닝 & AI

JSONL

JSONL은 ML 학습 데이터의 표준 형식입니다. OpenAI는 파인튜닝 데이터셋에 JSONL을 사용하며, 많은 ML 프레임워크가 JSONL 입력을 기대합니다. 각 줄은 하나의 학습 예제를 나타냅니다.

애플리케이션 로깅

JSONL

서버 로그, 애플리케이션 이벤트 및 감사 추적은 JSONL에 자연스럽게 적합합니다. 각 이벤트는 단일 줄로 작성되어 추가, grep으로 검색 및 스트리밍 도구로 처리하기 쉽습니다.

Web API & 구성

JSON

REST API는 일반적으로 요청 및 응답 본문에 JSON을 사용합니다. 구성 파일(.json)은 중첩된 객체가 있는 읽기 쉽고 구조화된 설정에 JSON을 사용합니다.

빅데이터 & 분석

JSONL

데이터 파이프라인, ETL 프로세스 및 분석 도구는 대량의 데이터를 처리하기 위해 JSONL을 사용합니다. 각 레코드를 독립적으로 처리할 수 있어 병렬 처리 및 MapReduce 패턴이 가능합니다.

코드 예제

JavaScript에서 JSON 읽기
// Reading JSON - must load entire file
const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));
// Access data
data.forEach(item => {
console.log(item.name);
});
JavaScript에서 JSONL 읽기
// Reading JSONL - stream line by line
import { createReadStream } from 'fs';
import { createInterface } from 'readline';
const rl = createInterface({
input: createReadStream('data.jsonl')
});
for await (const line of rl) {
const item = JSON.parse(line);
console.log(item.name);
}
JSON을 JSONL로 변환
// JSON array to JSONL
const jsonArray = JSON.parse(fs.readFileSync('data.json', 'utf8'));
const jsonl = jsonArray
.map(item => JSON.stringify(item))
.join('\n');
fs.writeFileSync('data.jsonl', jsonl);
JSONL을 JSON으로 변환
// JSONL to JSON array
const lines = fs.readFileSync('data.jsonl', 'utf8')
.split('\n')
.filter(line => line.trim());
const jsonArray = lines.map(line => JSON.parse(line));
fs.writeFileSync('data.json', JSON.stringify(jsonArray, null, 2));

JSON & JSONL 온라인 변환

무료 온라인 도구로 JSON과 JSONL 형식 간 즉시 변환 — 설치 불필요.

JSONL 뷰어를 사용해 보세요

브라우저에서 최대 1GB의 JSONL 파일을 즉시 보고 편집하세요. 업로드 불필요, 가입 불필요.

자주 묻는 질문

JSON vs JSONL: 차이점은? 완전 가이드