필요한 툴을, 바로 쓸 수 있게

JSON 배열 ↔ JSONL 변환기

JSON 배열을 붙여 넣으면 항목 하나가 한 줄인 JSONL이 바로 나오고, JSONL을 넣으면 JSON 배열로 묶입니다. 무엇을 넣었는지 보고 방향을 알아서 맞추며, {"data": [ … ]}처럼 감싼 API 응답이 여러 줄로 정리돼 있으면 안에 든 배열을 골라 바꿉니다(한 줄로 압축된 응답은 방향을 바꾸면 됩니다). 큰 정수와 키 순서는 원문 그대로 두고, 아래 키 구성에서 줄마다 빠진 키와 섞인 값 종류를 확인할 수 있습니다.

최종 수정 2026-10-20계산은 브라우저 안에서만 처리
변환 방향
빈 줄, 줄 끝 쉼표, 여러 줄에 걸친 값, RS 구분 문자를 건너뛰고 값을 차례로 읽습니다.
JSONL 결과

    입력한 글과 파일은 서버로 보내지 않고 이 브라우저에서만 변환합니다.

    키 구성

        최종 수정 2026-10-20입력값은 저장하지 않습니다

        ROBERIN 기준필요한 툴을,
        바로 쓸 수 있게.
        • 바로 보이는 화면입력 위치와 결과 위치를 또렷하게 둡니다.
        • 결과 먼저핵심 결과를 앞에 두고, 과정은 필요할 때만 보여줍니다.
        • 요구 줄이기가입이나 불필요한 정보 입력 없이 바로 쓰게 합니다.

        JSON 배열의 항목 하나가 JSONL의 한 줄이 됩니다

        JSON 배열은 대괄호 [ ] 안에 값을 쉼표로 늘어놓은 JSON 문서 하나입니다. JSONL(JSON Lines)은 한 줄에 JSON 값을 하나씩 적고 줄바꿈으로 나눈 형식입니다. 두 형식은 같은 목록을 담을 수 있지만 읽는 방식이 다릅니다. 배열은 닫는 대괄호까지 문서 전체를 읽어야 끝나고, JSONL은 한 줄씩 읽거나 맨 끝에 한 줄을 덧붙일 수 있습니다. 위 예시 배열에는 주문 네 건이 들어 있으므로 JSONL로 바꾸면 네 줄이 됩니다.

        이 변환기는 붙여 넣은 글이 배열인지 JSONL인지 보고 방향을 알아서 맞춥니다. {"data": [ … ]}처럼 객체로 감싼 API 응답이 여러 줄로 정리돼 있으면 안에 든 배열을 찾아 바꿉니다. 한 줄로 압축된 응답은 JSONL 한 줄로 읽히므로 방향을 'JSON 배열 → JSONL'로 바꾸면 됩니다. 결과 칸에는 줄마다 번호, 모양 글자, 크기 막대가 붙고, 줄을 누르면 그 값을 펼쳐 볼 수 있습니다. 아래 '키 구성'에서는 항목마다 키가 빠졌는지, 같은 키에 숫자와 문자열이 섞였는지를 막대로 확인합니다. 입력한 글과 파일은 서버로 보내지 않고 이 브라우저에서만 처리합니다.

        언제 JSON 배열과 JSONL을 서로 바꾸나

        • OpenAI Batch API 입력 파일을 만들 때: 배치 작업은 .jsonl 파일의 한 줄을 요청 하나로 읽고, 요청마다 서로 다른 custom_id가 있어야 합니다. 배치 하나에는 요청을 50,000건까지, 입력 파일은 200 MB까지 넣을 수 있습니다. 요청 목록을 배열로 만들었다면 JSONL로 바꾼 뒤 키 구성에서 custom_id에 '값이 모두 다름'이 붙었는지 확인하세요.
        • BigQuery 같은 데이터 웨어하우스에 올릴 때: Google Cloud 문서는 불러올 JSON이 줄바꿈으로 구분돼 있어야 하고 객체 하나가 한 줄에 있어야 한다고 안내합니다. API에서 받은 배열 파일을 그대로 올리면 이 조건에 맞지 않으므로 먼저 JSONL로 바꿉니다.
        • 쌓인 로그를 한 문서로 넘길 때: 한 줄씩 덧붙여 쌓은 JSONL 로그를 차트 도구나 JavaScript 코드처럼 JSON 문서 하나를 읽는 프로그램에 넘기려면 JSON 배열로 묶어야 합니다.
        • 큰 자료를 나눠 처리할 때: JSONL은 줄 수로 잘라도 조각마다 그대로 JSONL입니다. 배열은 잘린 곳에 대괄호와 쉼표가 어긋나 조각마다 고쳐야 하므로, 나눠 보내거나 나눠 처리할 자료는 JSONL이 편합니다.

        변환 규칙

        1. JSON 배열 → JSONL: 맨 바깥 배열의 항목마다 한 줄을 씁니다. 문자열 밖의 공백과 줄바꿈만 걷어 내고 숫자 표기, 이스케이프, 키 순서는 원문 그대로 둡니다. 줄 끝은 LF이고, JSON Lines 문서가 권하는 대로 마지막 줄 뒤에도 LF를 붙이며, BOM은 붙이지 않습니다. 빈 배열 []은 항목이 없어 0바이트가 됩니다.
        2. 감싼 API 응답: 맨 바깥이 객체이면 그 안에서 배열을 찾습니다(data.items처럼 키 3단계까지). 객체가 가장 많이 든 배열을 먼저 고르고, 위 띠의 '변환할 배열'에서 다른 배열이나 '객체 전체를 한 줄로'를 고를 수 있습니다.
        3. JSONL → JSON 배열: 줄마다 JSON 값 하나를 읽어 배열 항목으로 넣습니다. Windows의 CRLF 줄 끝도 읽습니다. JSON Lines는 빈 줄을 유효한 값으로 보지 않으므로 빈 줄은 오류로 알립니다. 배열 모양은 2칸·4칸 들여쓰기, 항목마다 한 줄, 모두 한 줄 가운데에서 고릅니다.
        4. 느슨하게 읽기: 빈 줄, 줄 끝 쉼표, 여러 줄에 걸쳐 들여쓴 값, RS 구분 문자(0x1E)를 건너뛰고 값을 차례로 읽습니다. NDJSON 명세는 빈 줄을 조용히 무시하는 것을 허용하면서도 그 동작을 문서에 적고 설정으로 바꿀 수 있게 하라고 합니다. 그래서 기본은 꺼 두고, 오류가 나면 오류 카드의 버튼으로 바로 켤 수 있게 했습니다.
        5. 방향 자동 감지: 입력 칸을 통째로 바꾸는 붙여넣기와 파일 열기 때만 방향을 맞춥니다. 대괄호로 감싼 배열 하나와 여러 줄에 걸친 객체 하나(보기 좋게 정리된 API 응답)는 JSON 배열로 보고, 한 줄짜리 객체를 포함한 나머지는 JSONL로 봅니다. Batch API 요청 줄처럼 한 줄에 쓴 객체는 JSONL 한 줄이기 때문입니다. 한 줄로 압축된 API 응답도 JSONL 한 줄로 읽히므로, 그 안의 배열을 줄로 나누려면 방향을 'JSON 배열 → JSONL'로 바꾸세요. 직접 타자를 치는 동안에는 방향을 바꾸지 않습니다.
        6. 값 종류: JSON Lines는 객체뿐 아니라 숫자·문자열·배열·null도 한 줄의 값으로 허용합니다. 이 변환기도 모든 값을 옮기고, 객체가 아닌 항목 수는 키 구성에 따로 알립니다.

        예시: 주문 네 건이 JSONL 네 줄로

        위 첫 화면의 배열을 JSONL로 바꾼 결과입니다. 크기는 줄바꿈을 뺀 UTF-8 바이트 수이고, 모양은 같은 키 묶음끼리 같은 글자를 붙인 것입니다.

        줄JSONL 내용크기모양
        1{"id":1001,"고객":"민지","수량":2,"태그":["신규","쿠폰"]}69 BA
        2{"id":1002,"고객":"준호","수량":1,"메모":"문 앞에 두세요\n벨은 누르지 마세요"}100 BB
        3{"id":1003,"고객":"서연","수량":3,"태그":[]}52 BA
        4{"id":1004,"고객":"도윤","수량":"2","태그":["단골"]}62 BA

        들여쓰기와 공백이 든 입력 배열은 330바이트이고, JSONL 결과는 줄바꿈 네 개를 더해 287바이트입니다. 2번째 줄 메모에 보이는 \n은 문자열 안에 적은 이스케이프라서 실제 줄바꿈이 아니고, 객체 전체가 한 줄에 그대로 남습니다. 같은 네 줄을 거꾸로 JSON 배열로 묶으면 배열 모양에 따라 크기가 이렇게 달라집니다.

        배열 모양크기쓰기 좋은 곳
        2칸 들여쓰기441 B사람이 구조를 눈으로 검토할 때
        4칸 들여쓰기547 B4칸 들여쓰기를 쓰는 코드 저장소에 넣을 때
        항목마다 한 줄302 B버전 관리에서 바뀐 항목만 한 줄 차이로 보고 싶을 때
        모두 한 줄289 B크기를 가장 작게 해서 보낼 때

        키 구성으로 확인할 것

        • 모양 A·B: 키 묶음이 같은 항목에는 같은 글자를 붙이고, 가장 많은 모양이 A입니다. 예시에서는 A가 세 건이고, 메모가 있고 태그가 없는 2번째 주문만 B(+메모 −태그)입니다. 모양 칩을 누르면 그 모양의 줄만 결과 칸에서 강조합니다.
        • 키 카드의 막대: 전체 항목 가운데 그 키가 든 항목의 비율과 값 종류(숫자·문자열·참거짓과 null·객체와 배열)를 보여 줍니다. 막대의 빈 부분은 그 키가 없는 항목입니다. 빈 부분이 있는 카드를 누르면 그 키가 빠진 줄을 강조합니다.
        • 종류 섞임: 예시의 수량은 세 건이 숫자이고 한 건이 문자열 "2"입니다. 열마다 자료형을 정해 두는 데이터베이스나 분석 도구에 올리면 이런 값이 오류나 형 변환의 원인이 될 수 있으니 미리 맞추세요. null은 빈 값으로 흔히 섞이므로 섞임으로 세지 않습니다.
        • 값이 모두 다름: 모든 항목에 있고 값 종류가 하나이며 같은 값이 한 번도 겹치지 않는 키에 붙습니다. id나 Batch API의 custom_id처럼 겹치면 안 되는 키를 확인할 때 씁니다.
        • 경고: 안전한 정수 범위를 넘는 숫자, 한 객체에 같은 키가 두 번 나온 항목, 객체가 아닌 항목이 있으면 키 구성 위쪽에 따로 알립니다.

        자주 틀리는 경우

        입력무엇이 문제인가이렇게 고칩니다
        줄 사이에 빈 줄이 있는 JSONLJSON Lines에서는 빈 줄도 오류입니다.빈 줄을 지우거나 '느슨하게 읽기'를 켭니다.
        {"a":1},처럼 줄 끝에 쉼표배열 안쪽을 그대로 복사한 모양이라 JSONL이 아닙니다.쉼표를 지우거나 '느슨하게 읽기'를 켭니다.
        여러 줄로 들여쓴 객체를 줄마다한 줄에 값 하나가 다 들어 있지 않습니다.'느슨하게 읽기'로 읽거나, 배열로 감싸 'JSON 배열 → JSONL'로 바꿉니다.
        {'a': 1, 'b': None}파이썬 딕셔너리를 그대로 출력한 모양입니다. JSON은 큰따옴표와 null만 씁니다.파이썬의 json 모듈로 다시 출력합니다.
        [1, 2,]JSON은 마지막 항목 뒤의 쉼표를 허용하지 않습니다.닫는 괄호 앞 쉼표를 지웁니다.
        문자열 안의 실제 줄바꿈이나 탭JSON은 문자열 안의 제어 문자를 이스케이프하도록 정합니다(RFC 8259 §7).줄바꿈은 \n, 탭은 \t로 적습니다.
        {"우편번호": 0012}JSON 숫자는 0으로 시작할 수 없습니다."0012"처럼 문자열로 적습니다.
        NaN, InfinityJSON 문법에는 이런 값이 없습니다(RFC 8259 §6).null이나 문자열로 바꿉니다.

        오류가 나면 결과 자리에 몇 번째 줄 몇 번째 글자인지와 그 줄의 문제 위치가 표시됩니다. '입력에서 위치 보기'를 누르면 입력 칸에서 그 글자로 바로 이동합니다.

        큰 정수와 같은 키는 원문 그대로 옮깁니다

        JSON 표준은 정수가 −(253)+1부터 (253)−1까지일 때 서로 다른 프로그램 사이에서 같게 읽힌다고 설명합니다(RFC 8259 §6). JavaScript가 정확히 다루는 가장 큰 정수도 9,007,199,254,740,991입니다. 이 변환기는 숫자를 계산용 숫자로 바꾸지 않고 적힌 글자를 그대로 옮기므로, 범위를 넘는 주문 번호도 바뀌지 않습니다. 같은 키가 한 객체에 두 번 나와도 지우지 않습니다. 다만 결과를 받는 프로그램은 다르게 읽을 수 있습니다.

        입력 값이 변환기의 결과JavaScript JSON.parse로 읽은 값
        900719925474099390071992547409939007199254740992
        {"id":1,"id":2}{"id":1,"id":2}{"id":2}
        1.50e+31.50e+31500
        "é""é""é"

        JSON 표준은 같은 이름이 두 번 나온 객체를 받은 프로그램의 동작은 예측할 수 없다고 보고, 많은 구현이 마지막 짝만 남긴다고 적습니다(RFC 8259 §4). 파이썬의 json 모듈도 마지막 값을 씁니다. 그래서 키 구성은 같은 키가 두 번 나온 항목 수를 경고로 알리고, 키 카드에서는 마지막 값을 기준으로 셉니다. 긴 번호는 받는 쪽에서도 바뀌지 않도록 "9007199254740993"처럼 문자열로 다루는 편이 안전합니다.

        JSON Lines·NDJSON 명세, RFC 8259·7464, OpenAI Batch 가이드, Google Cloud BigQuery 문서, 파이썬 json 문서, MDN 문서는 2026-10-20에 원문을 확인했습니다.

        한계와 주의

        • 입력은 5 MB(5,242,880바이트), 결과는 32 MB까지 변환합니다. gzip으로 압축한 파일(.jsonl.gz 등)은 풀어서 읽고 푼 크기로 셉니다. 더 큰 자료는 JSONL로 줄 단위로 나눠 처리하세요.
        • 결과 칸은 처음 400줄, 펼쳐 보기는 앞의 20,000자, 키 카드는 24개, 모양 칩은 8가지까지 화면에 보여 줍니다. 복사와 저장에는 전체 결과가 들어갑니다.
        • 키 구성은 항목의 맨 바깥 키만 셉니다. 객체 안에 든 객체의 키는 세지 않습니다.
        • 중첩은 512단계까지 읽습니다. 파일은 UTF-8로 읽고(맨 앞 BOM은 뺌), BOM이 있는 UTF-16 파일도 읽습니다. 저장하는 파일은 압축하지 않은 UTF-8이며 BOM을 붙이지 않습니다.
        • RS 문자로 값을 나누는 JSON 텍스트 시퀀스(RFC 7464)는 '느슨하게 읽기'로 읽기만 하고, 그 형식으로 쓰지는 않습니다.
        • 이 변환기는 JSON 문법까지만 검사합니다. 받는 프로그램이 요구하는 키(custom_id 등)와 자료형은 그 서비스의 문서로 확인하세요.

        출처

        자주 묻는 질문

        JSON 배열을 JSONL로 어떻게 바꾸나요?

        위 입력 칸에 JSON 배열을 붙여 넣거나 파일을 열면 결과 칸에 항목 하나가 한 줄인 JSONL이 바로 나옵니다. 복사 버튼으로 옮기거나 JSONL 저장 버튼으로 .jsonl 파일을 받으세요. JSONL을 붙여 넣으면 방향이 'JSONL → JSON 배열'로 바뀌어 배열로 묶입니다.

        JSON 파일의 확장자만 .jsonl로 바꾸면 되나요?

        안 됩니다. 확장자를 바꿔도 내용은 바깥 대괄호와 항목 사이 쉼표가 있는 배열 그대로입니다. JSONL은 대괄호 없이 한 줄에 값 하나를 적어야 하므로 이 변환기처럼 항목을 줄마다 나눠 다시 써야 합니다.

        API 응답이 {"data": [...]}처럼 감싸여 있으면요?

        여러 줄로 정리된 응답은 그대로 붙여 넣으면 됩니다. 맨 바깥이 객체이면 그 안에서 배열을 찾아(키 3단계까지) 객체가 가장 많은 배열을 JSONL로 바꿉니다. 한 줄로 압축된 응답은 JSONL 한 줄로 읽히므로 방향을 'JSON 배열 → JSONL'로 고르세요. 다른 배열을 쓰거나 객체 전체를 한 줄로 만들려면 위 띠의 '변환할 배열'에서 고르세요.

        JSONL 중간에 빈 줄이 있으면 어떻게 되나요?

        JSON Lines 기준에서는 빈 줄도 오류라서 몇 번째 줄인지 알려 줍니다. 빈 줄을 지우거나 오류 카드의 '느슨하게 읽기' 버튼을 누르면 빈 줄을 건너뛰고 배열로 묶습니다. 마지막 줄 뒤의 줄바꿈 한 번은 오류가 아닙니다.

        여러 줄로 들여쓴 객체를 넣었더니 오류가 납니다.

        JSONL은 값 하나를 한 줄에 모두 적어야 해서 여러 줄로 들여쓴 객체는 첫 줄에서 값이 끝나지 않았다는 오류가 납니다. '느슨하게 읽기'를 켜면 줄과 상관없이 값을 차례로 읽어 배열로 묶고, 그 배열을 다시 JSONL로 바꾸면 한 줄씩 정리됩니다.

        객체가 아닌 숫자나 문자열도 한 줄이 될 수 있나요?

        됩니다. JSON Lines는 객체뿐 아니라 숫자·문자열·배열·null도 한 줄의 값으로 허용하므로 이 변환기도 그대로 옮깁니다. 다만 객체만 받는 도구가 많아 객체가 아닌 항목이 있으면 키 구성에서 개수를 알려 줍니다.

        긴 숫자나 같은 키가 바뀌지 않나요?

        바뀌지 않습니다. 숫자를 계산용 숫자로 바꾸지 않고 적힌 글자를 그대로 옮기므로 9007199254740993 같은 큰 정수와 1.50e+3 같은 표기가 그대로 남고, 같은 키가 두 번 나와도 지우지 않습니다. 받는 프로그램은 큰 수를 반올림하거나 마지막 키만 쓸 수 있어 키 구성에서 경고로 알립니다.

        입력한 JSON이나 파일이 서버에 저장되나요?

        저장되지 않습니다. 변환은 이 브라우저 안에서만 하고 입력한 글과 파일을 서버로 보내지 않습니다. 페이지를 닫으면 입력 내용도 사라집니다.