JSONL이란? JSON Lines 형식 완전 가이드
JSON Lines에 대해 알아야 할 모든 것 — 구문, 예제, 사용 사례 및 모범 사례.
최종 업데이트: 2026년 2월
JSONL이란?
JSONL(JSON Lines)은 Newline Delimited JSON(NDJSON)으로도 알려져 있으며, 각 줄이 유효한 JSON 값이고 줄바꿈 문자로 구분되는 텍스트 기반 데이터 형식입니다. 데이터를 단일 배열이나 객체로 감싸는 표준 JSON과 달리 JSONL은 줄당 하나의 레코드를 저장합니다.
이 간단한 설계는 JSONL을 스트리밍, 로깅 및 대용량 데이터셋 처리에 이상적으로 만듭니다 — 각 줄은 전체 파일을 메모리에 로드하지 않고도 독립적으로 읽고, 파싱하고, 처리할 수 있습니다.
이 형식은 대량의 데이터를 처리하는 도구와 플랫폼에 의해 대중화되었으며, OpenAI(파인튜닝 데이터셋용), BigQuery, Apache Spark 및 로그 관리 시스템이 이에 포함됩니다.
JSONL 구문 규칙
JSONL 형식은 몇 가지 간단한 규칙을 따릅니다:
- 각 줄은 유효한 JSON 값(객체, 배열, 문자열, 숫자, 불리언 또는 null)이어야 합니다
- 줄은 줄바꿈 문자(\n)로 구분됩니다
- 줄 사이에 쉼표나 구분자가 없습니다
- 파일은 UTF-8 인코딩을 사용해야 합니다
- 파일 끝의 후행 줄바꿈은 선택 사항입니다
- 빈 줄은 대부분의 파서에서 무시됩니다
{"name":"Alice","age":30,"city":"New York"}{"name":"Bob","age":25,"city":"London"}{"name":"Charlie","age":35,"city":"Tokyo"}
참고: 각 줄은 완전하고 자체 포함된 JSON 객체입니다. 줄 사이에 쉼표가 없고 래핑 배열이 없습니다.
JSONL 예제
{"id":1,"name":"Alice","email":"alice@example.com"}{"id":2,"name":"Bob","email":"bob@example.com"}{"id":3,"name":"Charlie","email":"charlie@example.com"}
{"user":{"name":"Alice","age":30},"scores":[95,87,92]}{"user":{"name":"Bob","age":25},"scores":[88,91,76]}
JSONL 줄이 모두 같은 유형일 필요는 없습니다 — 각 줄은 유효한 JSON이면 됩니다:
{"event":"login","user":"alice","timestamp":"2026-01-15T10:30:00Z"}{"event":"purchase","user":"alice","amount":29.99,"items":["book","pen"]}{"event":"logout","user":"alice","timestamp":"2026-01-15T11:45:00Z"}
JSONL의 가장 인기 있는 용도 중 하나는 OpenAI 파인튜닝 데이터셋입니다:
{"messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is JSONL?"},{"role":"assistant","content":"JSONL is a text format where each line is a valid JSON value."}]}{"messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"How do I read a JSONL file?"},{"role":"assistant","content":"Read the file line by line, parsing each line as JSON."}]}
JSONL 파일 읽는 방법
JSONL 파일은 줄 단위 텍스트 처리를 지원하는 모든 도구로 읽을 수 있습니다. 가장 일반적인 방법은 다음과 같습니다:
표준 Unix 도구를 사용하여 JSONL 파일을 검사합니다:
# View first 5 lineshead -n 5 data.jsonl# Count total lines (records)wc -l data.jsonl# Pretty-print each line with jqcat data.jsonl | jq .# Filter by field valuecat data.jsonl | jq 'select(.age > 30)'
Python의 내장 json 모듈은 JSONL을 자연스럽게 처리합니다:
import jsonwith open('data.jsonl', 'r') as f:for line in f:record = json.loads(line)print(record['name'])
Node.js에서 JSONL 파일을 줄 단위로 읽습니다:
import { createReadStream } from 'fs';import { createInterface } from 'readline';const rl = createInterface({input: createReadStream('data.jsonl')});for await (const line of rl) {const record = JSON.parse(line);console.log(record.name);}
JSONL 파일 만드는 방법
JSONL 파일 생성은 간단합니다 — 줄당 하나의 JSON 값을 작성하면 됩니다.
import jsonrecords = [{"name": "Alice", "age": 30},{"name": "Bob", "age": 25},{"name": "Charlie", "age": 35},]with open('output.jsonl', 'w') as f:for record in records:f.write(json.dumps(record) + '\n')
import { writeFileSync } from 'fs';const records = [{ name: 'Alice', age: 30 },{ name: 'Bob', age: 25 },{ name: 'Charlie', age: 35 },];const jsonl = records.map(r => JSON.stringify(r)).join('\n');writeFileSync('output.jsonl', jsonl + '\n');
JSONL에 주석을 추가할 수 있나요?
아니요. JSONL 사양은 주석을 지원하지 않습니다. JSONL 파일의 모든 줄은 유효한 JSON 값이어야 합니다 — JSON 자체에 주석 구문이 없기 때문입니다.
데이터와 함께 메타데이터나 주석을 포함해야 하는 경우, 일반적인 해결 방법은 다음과 같습니다:
- 1JSON 객체에 메타데이터 필드 추가: '{'"_comment": "테스트 데이터", "name": "Alice"'}'
- 2JSONL 파일과 별도의 메타데이터 파일 사용
- 3파일의 첫 번째 줄에 메타데이터 추가: '{'"_meta": '{'"version": "1.0", "created": "2026-01-15"'}''}'
"주석" 필드는 일반 데이터로 파싱된다는 점에 유의하세요. JSONL 파일을 사용하는 애플리케이션은 메타데이터 필드를 무시하도록 설계해야 합니다.
JSONL vs JSON
핵심 차이점은 구조입니다. JSON은 모든 것을 단일 값으로 감싸고, JSONL은 줄당 하나의 값을 저장합니다.
[{"name": "Alice", "age": 30},{"name": "Bob", "age": 25}]
{"name":"Alice","age":30}{"name":"Bob","age":25}
- JSON은 파싱하려면 전체를 메모리에 로드해야 합니다; JSONL은 줄 단위로 읽을 수 있습니다
- JSON은 요소 사이에 쉼표가 필요합니다; JSONL은 줄바꿈을 사용합니다
- JSON은 구성 파일과 API에 더 적합합니다; JSONL은 대용량 데이터셋과 스트리밍에 더 적합합니다
- JSON에 데이터를 추가하려면 전체 파일을 다시 작성해야 합니다; JSONL은 새 줄을 추가하기만 하면 됩니다
자세한 비교는 완전한 JSON vs JSONL guide.
일반적인 사용 사례
머신러닝 & AI
가장 인기JSONL은 ML 학습 데이터의 표준 형식입니다. OpenAI, Hugging Face 및 기타 AI 플랫폼은 각 학습 예제가 효율적으로 셔플, 샘플링 및 스트리밍할 수 있는 자체 포함 줄이기 때문에 파인튜닝 데이터셋에 JSONL을 사용합니다.
로그 파일 & 이벤트 스트림
JSONL구조화된 로깅 시스템(ELK 스택, Datadog, CloudWatch)은 JSONL 형식으로 로그를 출력합니다. 각 로그 항목은 하나의 JSON 줄로, 새 항목을 추가하고 실시간으로 로그를 처리하기 쉽습니다.
빅데이터 처리
JSONLApache Spark, BigQuery, AWS Athena와 같은 도구는 JSONL을 기본 지원합니다. 줄 단위 형식은 분산 시스템에서 병렬 처리를 가능하게 합니다 — 각 워커가 독립적으로 줄 청크를 처리할 수 있습니다.
스트리밍 API
JSONL대용량 결과 세트를 반환하는 API는 종종 JSONL 스트리밍을 사용합니다. 클라이언트는 전체 응답을 기다리지 않고 결과가 도착하는 즉시 처리를 시작할 수 있습니다.
JSONL 파일 확장자
JSONL 파일은 일반적으로 다음 확장자를 사용합니다:
세 확장자 모두 동일한 형식을 포함합니다 — 줄당 하나의 JSON 값. JSONL의 MIME 유형은 application/jsonl 또는 application/x-ndjson입니다.
무료 JSONL 도구 사용해 보기
JSONL 구문 검증, 형식 간 변환, 파일 보기 — 모두 브라우저에서 가능합니다.