← 전체 글로

앱 소개

JSON 포매터·검증기 — 큰 숫자는 그대로 두고 공백만 정리하기

API 응답과 설정 JSON을 2칸·4칸 또는 한 줄로 정리한다. 큰 정수와 숫자 표기를 보존하는 방식, 중복 키 오류, 문법 검사와 데이터 검증의 차이를 설명한다.

이 글의 목적

JSON을 정리하는 독자가 숫자 손실 없이 원문을 보존하고 오류 위치와 검증 범위를 구별하도록 돕는다.

핵심 내용

공백을 정리해도 숫자·문자열 토큰과 키 순서는 그대로 남는다. 유효한 JSON이라는 결과는 데이터 내용이나 API 스키마까지 맞다는 뜻이 아니다.

읽고 나서

원본을 보관한 뒤 JSON을 붙여 넣고 오류 위치를 확인한다. 출력 형식을 선택하고 큰 숫자와 필요한 필드를 대조한 다음 결과를 저장한다.

목차

먼저 답하면

JSON 포매터·검증기는 API 응답과 설정 문서의 문법을 검사하고 공백을 정리한다. 큰 숫자를 JavaScript 숫자로 바꾸지 않고 원문 토큰 그대로 남기는 것이 핵심이다. 900719925474099312345처럼 긴 정수도 마지막 자리가 바뀌지 않는다. 원본은 따로 보관하고 정리본을 검토한 뒤 사용한다.

펼치기와 압축은 같은 값을 다른 간격으로 보여준다

들여쓰기 2칸과 4칸은 객체·배열을 여러 줄로 펼친다. 한 줄로 압축은 값 바깥의 불필요한 공백을 없앤다. 문자열 안의 공백과 이스케이프, 객체 키 순서, 배열 순서는 유지된다. 키를 알파벳순으로 정렬하는 기능은 아니다.

예를 들어 {"price":1.2300e+400,"offset":-0}를 정리해도 두 숫자는 원문 표기로 남는다. 일반적인 파싱 뒤 재직렬화와 달리 숫자 값을 재계산하지 않는다. 다만 다른 프로그램으로 옮긴 뒤 그 프로그램이 숫자를 변환하면 정밀도가 달라질 수 있다. 이 도구의 보존 결과가 이후 모든 처리까지 보장하는 것은 아니다.

오류는 고치는 대신 처음 위치를 알려준다

키와 문자열에는 큰따옴표가 필요하다. 마지막 항목 뒤 쉼표, 주석, 작은따옴표, NaN은 JSON 문법이 아니다. 오류가 있으면 처음 발견한 줄과 칸을 표시하며 정리 결과를 지우고 복사·저장 버튼을 비활성화한다. 자동으로 수정한 문서를 만들어 원뜻을 바꾸지 않는다.

같은 객체에 같은 키가 두 번 있으면 오류로 처리한다. "name"과 "\u006eame"처럼 이스케이프 표기가 달라도 해석한 키가 같으면 중복이다. 일부 프로그램이 마지막 값만 남길 수 있으므로 어떤 값을 유지할지 원문에서 직접 결정한다.

줄·칸은 원문 기준이다. 줄바꿈은 CRLF도 한 번으로 세지만 칸은 JavaScript 문자열 단위로 계산하므로 이모지 뒤의 위치가 편집기 표시와 다를 수 있다. 숫자는 객체·배열 안뿐 아니라 최상위 값으로도 검사하며 문자열, true, false, null도 지원한다.

문법 검사와 업무 데이터 검증은 다르다

문법이 맞아도 필수 필드, 날짜 형식, 실제 금액이나 API 스키마가 틀릴 수 있다. 서명·해시용 정규화도 아니다. 공백이 달라지면 바이트와 해시가 바뀔 수 있으므로 서명된 원문을 정리본으로 교체하지 않는다. 화면의 글자 수는 UTF-16 문자열 단위이며 UTF-8 파일 바이트 수가 아니다.

입력은 최대 20만 글자, 중첩은 100단계다. 한도를 넘으면 필요한 부분을 따로 검사하되 잘라 낸 조각이 전체 문서의 문법을 증명한다고 해석하지 않는다. 입력은 서버로 보내지 않고 브라우저에서 처리하며 자동 저장하지 않는다. 비밀 키·개인정보를 결과 파일이나 클립보드로 공유하는 행동은 별도이므로 전달 전에 직접 확인한다.

표 형태의 데이터를 바꾸려면 CSV ↔ JSON 변환기, 수정 전후를 살피려면 텍스트 비교기를 함께 쓸 수 있다.