JSONL 변환기

브라우저에서 JSONL/NDJSON을 JSON 배열로 변환하고 JSON 배열을 JSON Lines로 되돌리며, 줄별 검증과 유효 레코드 내보내기를 지원합니다. 큰 ID 같은 숫자는 입력한 자릿수 그대로 남습니다.

  • 브라우저에서 처리
  • 데이터가 브라우저 밖으로 나가지 않습니다
  • 무료 · 회원가입 불필요
JSONL 레코드를 JSON 배열로 만듭니다. 잘못된 줄이 있으면 유효한 줄만 변환을 켜야 변환할 수 있습니다.
배열의 각 항목을 한 줄의 compact JSONL로 만듭니다. 최상위 객체나 단일 값은 오류가 됩니다.
샘플 레코드 3개를 불러와 JSON 배열로 변환합니다.
두 패널, 선택 파일, 개수, 문제와 대기 작업을 지우고 옵션은 유지합니다. 도구 안의 Ctrl/⌘+L도 같은 작업을 합니다.
옵션과 저장
기본값은 켜짐입니다. 끄면 빈 줄을 오류로 셉니다. 변경하면 변환 결과를 지우고 JSONL을 다시 검증합니다.
JSONL을 JSON으로 변환할 때 잘못된 레코드를 제외합니다. 변경하면 변환 결과를 지우고 다시 검증합니다. 변환은 수동으로 실행합니다.
JSON 출력을 공백 2칸으로 들여씁니다. 변경할 때 JSONL 패널에 내용이 있으면 다시 변환합니다.
한 줄에 완전한 JSON 값 하나를 씁니다. 입력을 멈춘 뒤 350ms 후 자동 검증합니다. 열기는 로컬 파일을 읽고 변환 없이 검증합니다. 숫자 문자는 그대로 유지합니다.
복사와 .jsonl 저장은 최근 변환한 compact 레코드를 사용하며 제외한 오류 줄은 포함하지 않습니다. 어느 쪽이든 편집하면 변환이 성공할 때까지 사용할 수 없습니다.
최상위 JSON 배열을 붙여넣습니다. 편집하면 이전 JSONL 결과가 지워지며 JSON → JSONL로 변환합니다. 열기는 로컬 배열 파일을 읽고 즉시 변환합니다.
복사와 .json 저장은 최근 변환한 배열에 현재 서식 설정을 적용합니다. 어느 쪽이든 편집하면 변환이 성공할 때까지 사용할 수 없습니다.
0줄
0유효
0오류
0빈 줄
줄별 문제 개수에는 모든 줄과 오류가 포함됩니다. 목록은 처음 40개 오류를 보여 주며 각 줄에서 최대 120자를 미리 봅니다.
0
예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.

예시: 주문 로그의 큰 주문번호

주문번호를 64비트 정수로 쓰는 시스템에서는 값이 253을 넘기도 합니다. JavaScript에서 JSON.parse() 후 JSON.stringify()하면 끝자리가 바뀌지만, 이 도구는 JSON.parse()를 문법 검사에만 쓰고 숫자는 입력한 문자를 그대로 씁니다.

{"order_no":9007199254740993,"amount":15000.0,"region":"부산"}
{"order_no":9007199254740995,"amount":8900.50,"region":"\uc11c\uc6b8"}
[
  {
    "order_no": 9007199254740993,
    "amount": 15000.0,
    "region": "부산"
  },
  {
    "order_no": 9007199254740995,
    "amount": 8900.50,
    "region": "서울"
  }
]

파싱한 뒤 다시 문자열로 만들면 9007199254740992, 9007199254740996, 15000, 8900.5가 됩니다. 문자열은 JSON.stringify()의 표준 표기로 출력하므로 "\uc11c\uc6b8"은 “서울”이 되고, compact JSONL에서는 쉼표 뒤 공백도 사라집니다.

반대 방향에서도 숫자는 유지됩니다.

[
  {"order_no": 9007199254740993, "amount": 15000.0},
  {"order_no": 9007199254740995, "amount": 8900.50}
]
{"order_no":9007199254740993,"amount":15000.0}
{"order_no":9007199254740995,"amount":8900.50}

복사와 저장

복사 버튼과 두 저장 버튼은 마지막으로 성공한 변환의 결과를 씁니다. JSONL → JSON 후에는 .json 저장이 오른쪽 배열을 저장하고, JSONL 쪽 복사와 .jsonl 저장은 변환된 레코드를 한 줄에 하나씩 compact 형식으로 내보냅니다. 붙여넣은 원문과는 다르며, ‘유효한 줄만 변환’으로 뺀 오류 줄은 없고 공백도 제거되어 있습니다. JSON → JSONL 후에는 .json 저장이 현재 ‘JSON 보기 좋게 출력’ 설정으로 배열을 저장합니다.

첫 변환 전에는 버튼을 쓸 수 없습니다. 어느 쪽 패널이든 편집하거나, ‘빈 줄 무시’·‘유효한 줄만 변환’을 바꾸거나, 지우기(또는 도구 안에서 Ctrl+L / Cmd+L)를 누르거나, 변환이나 파일 읽기에 실패하면 바로 쓸 수 없게 됩니다. 변환에 실패하면 출력 쪽이 비워지므로 이전 입력의 결과를 복사하는 일은 없습니다. 자동 검증만으로는 버튼이 활성화되지 않습니다. ‘JSON 보기 좋게 출력’을 바꾸면 JSONL 쪽에 내용이 있을 때 JSONL → JSON을 다시 실행합니다.

JSONL과 JSON 배열

JSON 배열은 모든 레코드를 하나의 큰 문서 안에 감쌉니다. JSONL은 각 레코드를 독립적인 JSON 값으로 한 줄에 씁니다. 이 줄 중심 형식은 로그, 스트리밍 내보내기, 명령줄 처리, 대형 데이터셋에 잘 맞습니다.

예시: 3줄짜리 내보내기에 잘못된 줄이 하나

아래 내용을 JSONL 패널에 붙여넣고 350ms 후 자동 검증을 기다립니다.

{"id":1,"event":"signup"}
{"id":2,"event":"purchase",}
{"id":3,"event":"cancel"}

카운터는 전체 3줄, 유효 2, 오류 1, 빈 줄 0을 표시합니다. 문제 패널에는 2번째 줄과 브라우저의 파서 메시지가 나오며, Chrome에서는 Expected double-quoted property name in JSON at position 27 (line 1 column 28)입니다(위치는 해당 줄의 시작부터 센 값). Firefox와 Safari는 문구가 다릅니다. 이 줄을 고치거나 유효한 줄만 변환을 켜기 전까지 JSONL → JSON은 오류로 멈춥니다. 옵션을 켜면 1번과 3번 레코드가 출력되고 “JSONL 레코드 2개를 JSON 배열로 변환했습니다.”가 표시되며, .jsonl 저장은 다음 내용을 저장합니다.

{"id":1,"event":"signup"}
{"id":2,"event":"purchase",}
{"id":3,"event":"cancel"}
{"id":1,"event":"signup"}
{"id":3,"event":"cancel"}

명령줄에서 같은 작업

스크립트에 넣을 때는 jq로 같은 변환을 할 수 있습니다(jq 1.7.1 실제 출력).

jq -c '.[]' data.json > data.jsonl   # JSON 배열 → JSONL
jq -s '.' data.jsonl > data.json     # JSONL → JSON 배열
jq -c . bad.jsonl                    # 첫 오류에서 멈춤:
# jq: parse error: Expected another key-value pair at line 2, column 28

jq는 첫 오류에서 멈춥니다. 이 도구는 모든 줄을 파싱해 오류 줄을 한 번에 보여 줍니다.

제한

  • 중복 키는 마지막 값이 남습니다. JSON.parse()와 같이 {"x":1,"x":2}는 첫 x 자리에서 {"x":2}가 됩니다.
  • 배열 인덱스처럼 보이는 키는 객체 맨 앞으로 옮겨져 숫자 오름차순으로 정렬됩니다(JavaScript 객체와 동일). {"b":1,"2":2,"1":3}는 {"1":3,"2":2,"b":1}가 됩니다. 값은 바뀌지 않습니다.
  • JSON → JSONL은 최상위 배열만 받습니다. 객체나 단일 값이면 “JSON 입력은 배열이어야 합니다.”가 표시됩니다.
  • 레코드 하나는 한 줄에 있어야 합니다. 여러 줄로 정렬된 객체는 걸친 줄마다 오류가 납니다. 줄바꿈으로 나눈 뒤 각 줄의 앞뒤 공백을 제거하므로 Windows CRLF 파일도 그대로 쓸 수 있습니다.
  • 문제 패널은 처음 40개 오류 줄만 보여 주며, 오류 카운터는 전부 셉니다.

FAQ

JSONL이란 무엇인가요?

JSONL은 JSON Lines 또는 NDJSON이라고도 부르며, 한 줄에 하나의 완전한 JSON 값을 저장하는 형식입니다. 로그, 데이터 내보내기, 스트리밍 API, AI 데이터셋에서 자주 사용됩니다.

어떤 JSON 입력을 JSONL로 변환할 수 있나요?

JSON 배열을 붙여넣으면 됩니다. 배열의 각 항목은 한 줄의 compact JSONL이 됩니다. 객체, 배열, 문자열, 불리언, null을 유지하고, 숫자는 입력한 문자 그대로 출력하므로 9007199254740993, 1.50, 1e-7도 바뀌지 않습니다.

빈 줄은 어떻게 처리되나요?

기본 설정에서는 빈 줄을 무시합니다. 옵션을 끄면 빈 줄이 줄 단위 검증 문제로 표시됩니다.

유효한 JSONL 레코드만 내보낼 수 있나요?

가능합니다. '유효한 줄만 변환'을 켜고 JSONL → JSON을 클릭하면 JSON 배열에는 유효한 레코드만 들어가고, '.jsonl 저장'은 같은 레코드를 한 줄에 하나씩 저장합니다. 자동 검증은 줄을 확인하기만 하며, 변환이 성공하기 전까지 복사·저장 버튼은 쓸 수 없습니다.

데이터는 어디에서 처리되나요?

파싱, 검증, 변환, 파일 내보내기는 모두 브라우저 내부의 로컬 JavaScript API로 실행됩니다.