JSON을 TOON으로 변환하는 방법
- JSON을 붙여넣거나 파일을 엽니다. TOON 결과와 예상 토큰 절감량이 바로 표시됩니다.
- 구분자를 선택합니다: 쉼표(기본값), 탭, 파이프. 탭을 쓰면 토큰이 더 줄어드는 경우가 많습니다.
- TOON을 복사해 프롬프트에 넣습니다. 모델이 TOON으로 답한 내용을 읽으려면 방향을 TOON → JSON으로 바꾸세요.
TOON vs JSON: 예시로 비교
JSON으로 표현한 두 사용자:
{"users":[{"id":1,"name":"Ada","role":"admin"},{"id":2,"name":"Bob","role":"user"}]}
같은 데이터를 TOON으로 표현하면:
users[2]{id,name,role}:1,Ada,admin2,Bob,user
필드 이름은 객체마다 반복되지 않고 헤더에 한 번만 쓰이며, 따옴표와 중괄호, 대부분의 구두점이 사라집니다. 데이터베이스 행, 로그, 검색 결과, 상품 목록처럼 구조가 균일한 객체 배열에서는 절감 효과가 큽니다. 고객 레코드 100개로 테스트한 결과, TOON은 포맷된 JSON보다 약 65%, 압축된 JSON보다 47% 적은 토큰을 사용했습니다. [2] 길이 표시 덕분에 모델과 디코더가 누락된 행이 없는지도 확인할 수 있습니다.
TOON 형식 한눈에 보기
| 데이터 | TOON |
|---|---|
| 객체 필드 | name: Ada |
| 중첩 객체 | address: 다음에 들여쓴 필드 |
| 일반 값의 배열 | tags[3]: red,green,blue |
| 키가 같은 객체의 배열 | users[2]{id,name}: 다음에 객체마다 한 행 |
| 혼합되거나 중첩된 배열 | items[2]: 다음에 - 리스트 항목 |
| 문자열 | 따옴표 없이 씀. 단, 구분자, 콜론, 따옴표, 괄호가 들어 있거나, 앞뒤에 공백이 있거나, 숫자, true, false, null처럼 보이면 따옴표로 감쌈 |
JSON이 여전히 더 나은 경우
- 깊이 중첩되거나 불규칙한 데이터 – 객체마다 키가 다르거나 중첩 객체가 들어 있으면 TOON은 들여쓴 리스트 형식으로 돌아가므로 절감 효과가 줄거나 사라집니다. 중첩된 주소와 태그 목록을 각각 포함한 레코드 20개로 테스트했을 때, TOON은 포맷된 JSON보다 34% 작았지만 압축된 JSON보다는 12% 컸습니다. 변환기는 입력한 데이터에 대해 두 가지 비교 결과를 모두 보여 줍니다.
- 기계 간 인터페이스 – API, 함수 호출(function calling), 구조화된 출력은 JSON을 기대합니다.
- 모델의 익숙함 – 언어 모델은 TOON보다 JSON을 훨씬 많이 학습했습니다. 전환하기 전에 실제 프롬프트로 답변 품질을 확인하세요.
- 아주 작은 데이터 – 값이 몇 개뿐이라면 차이는 무시할 만합니다.
토큰 수는 문자 수 ÷ 4로 추정합니다. 정확한 수치는 모델의 토크나이저에 따라 다르지만, 상대적인 차이는 좋은 참고 자료가 됩니다.
자주 묻는 질문
TOON이란 무엇인가요?
TOON(Token-Oriented Object Notation)은 LLM 프롬프트를 위해 설계된, JSON 데이터 모델의 간결하고 사람이 읽기 쉬운 인코딩 방식입니다. 객체에는 YAML 스타일의 들여쓰기를, 균일한 배열에는 CSV 스타일의 행을 사용합니다.
TOON이 JSON보다 더 좋은가요?
표 형태이거나 구조가 균일한 데이터를 언어 모델에 보낼 때는 대개 그렇습니다. 토큰이 적게 들고 배열 길이가 명시되기 때문입니다. API, 저장, 깊이 중첩된 데이터에는 여전히 JSON이 더 낫습니다.
토큰 수는 어떻게 추정하나요?
문자 수를 4로 나눕니다. 영어 텍스트와 코드에 흔히 쓰는 경험칙입니다. 정확한 토큰 수는 모델의 토크나이저에 따라 다르며, 한글이 많은 데이터는 실제 토큰 수가 더 많을 수 있습니다.
TOON을 다시 JSON으로 변환할 수 있나요?
네. 방향을 TOON → JSON으로 바꾸세요. 디코더가 선언된 배열 길이를 확인하고, 문제가 있으면 해당 줄을 알려 줍니다.