본문으로 건너뛰기
SDETRole
SDETRole

JSON·데이터

JSON 포매터

JSON을 2/4칸 또는 탭 들여쓰기로 정렬하고 키를 정렬합니다.

브라우저에서만 실행됩니다 회원가입 불필요

Input JSON

0 chars

Formatted

도구 소개

API 응답과 로그 페이로드는 대개 한 줄로 압축된 상태로 전달됩니다. 이를 정렬하면 어설션이나 버그 리포트를 작성할 때 필드 이름, 중첩 구조, 값을 훨씬 쉽게 확인할 수 있습니다. 이 포매터는 브라우저의 기본 JSON 파서로 입력을 해석하므로, 여기서 통과하는 입력은 테스트 코드의 JSON.parse도 그대로 받아들입니다. 어떤 데이터도 업로드되지 않으며, 편의를 위해 마지막 입력만 브라우저의 로컬 스토리지에 보관됩니다.

사용 방법

  1. 입력 패널에 JSON을 붙여 넣거나 “Load sample”(샘플 불러오기)를 클릭하세요.
  2. 들여쓰기 방식을 고르고, 두 페이로드를 비교하기 쉽도록 필요하면 키를 알파벳순으로 정렬하세요.
  3. 정렬된 결과를 복사하거나 다운로드하세요. 입력이 유효하지 않으면 수정할 줄과 열이 오류에 표시됩니다.

가장 흔한 JSON 구문 오류 해결법

“유효하지 않은 JSON” 문제는 대부분 손으로 작성했거나 JavaScript에서 복사한 페이로드에서 생깁니다. 대표적인 원인과 해결 방법은 다음과 같습니다.

  • {"a": 1,}나 [1, 2,]처럼 마지막 항목 뒤에 남은 쉼표: 마지막 쉼표를 삭제합니다.
  • {'a': 1}처럼 작은따옴표로 감싼 문자열이나 키: JSON은 큰따옴표만 허용합니다.
  • {a: 1}처럼 따옴표 없는 키: 모든 키는 큰따옴표로 감싼 문자열이어야 합니다.
  • 주석(// 또는 /* */): JSON에는 주석 문법이 없습니다. 주석을 지우거나, 주석이 필요한 설정은 도구가 명시적으로 읽는 JSONC 또는 JSON5 파일로 관리합니다.
  • 값으로 쓰인 NaN, Infinity, undefined: JSON 값이 아닙니다. null, 숫자 또는 문자열을 사용합니다.
  • 문자열 안의 실제 줄바꿈이나 탭: \n 또는 \t로 이스케이프합니다.
  • NDJSON의 로그 두 줄처럼 두 문서를 함께 붙여 넣은 경우: 한 줄씩 정렬합니다.

테스트 코드에서 JSON 보기 좋게 출력하기

테스트 리포트의 페이로드가 읽기 쉬우면 실패 원인을 훨씬 빨리 찾을 수 있습니다. JavaScript와 TypeScript에서는 JSON.stringify(value, null, 2)가 2칸 들여쓰기로 출력합니다. Playwright에서는 testInfo.attach('response', { body: JSON.stringify(json, null, 2), contentType: 'application/json' })로 정렬된 본문을 리포트에 첨부할 수 있습니다.

Java의 Jackson에서는 mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj)를, Python에서는 json.dumps(obj, indent=2, sort_keys=True)를 사용합니다. 명령줄에서는 jq . response.json이 파일을 정렬하고 색상까지 입혀 줍니다.

큰 숫자는 정밀도를 잃습니다

JSON 자체는 숫자 크기에 제한이 없지만, JavaScript는 모든 숫자를 64비트 부동소수점으로 해석합니다. 일부 데이터베이스 ID처럼 9,007,199,254,740,991(2^53 − 1)보다 큰 정수는 아무 경고 없이 반올림됩니다. 이 포매터는 JSON.parse를 사용하므로 이런 ID는 결과에서 반올림되어 보이며, 브라우저 기반 테스트 코드에서도 같은 일이 일어납니다. 큰 ID를 반환하는 API는 문자열로 보내야 하고, 테스트도 문자열로 비교해야 합니다.

JSON 포매터 자주 묻는 질문

JSON 포매터란 무엇인가요?

JSON 포매터(뷰티파이어)는 압축되거나 지저분한 JSON을 일관된 들여쓰기와 줄바꿈으로 다시 출력해 구조를 쉽게 읽을 수 있게 해 줍니다. 공백만 바꿀 뿐 데이터는 절대 바꾸지 않습니다. 테스터는 압축된 API 응답을 읽고, 페이로드를 비교하고, 깔끔한 예시를 버그 리포트에 붙여 넣을 때 사용합니다. 이 포매터는 JSON 압축과 키 정렬도 지원하며, 브라우저의 기본 파서를 사용하므로 JSON.parse가 받아들이는 입력만 정확히 받아들입니다.

온라인에서 JSON을 정렬하려면 어떻게 하나요?

위의 입력 패널에 JSON을 붙여 넣거나 “Load sample”(샘플 불러오기)를 클릭하세요. 유효한 JSON은 선택한 들여쓰기(2칸, 4칸 또는 탭)로 바로 정렬되며 결과를 복사할 수 있습니다. 입력이 유효하지 않으면 파서 오류와 함께 해석이 멈춘 줄과 열을 보여 줍니다. 정렬은 모두 브라우저 안에서 이루어지므로 테스트 데이터가 담긴 API 응답도 안심하고 붙여 넣을 수 있습니다.

JSON 유효성은 어떻게 검사하나요?

JSON 유효성 검사는 키와 문자열의 큰따옴표, 마지막 쉼표 금지, 주석 금지, 괄호 짝 맞춤 같은 구문 규칙을 지키는지 확인하는 작업입니다. 포매터는 유효한 JSON일 때만 결과를 출력하므로 여기에 붙여 넣기만 해도 자동으로 검사됩니다. 유효한 JSON이 올바른 필드와 타입을 갖췄는지까지 확인하려면 JSON Schema 검증기 같은 스키마 검증을 사용하세요. 코드에서는 JavaScript의 JSON.parse와 Python의 json.loads가 유효하지 않은 입력에 예외를 던집니다.

JSON 파일의 오류는 어떻게 찾나요?

내용을 여기에 붙여 넣고 표시된 줄과 열을 확인하세요. 파서는 더 이상 진행할 수 없는 지점에서 멈추므로 실제 실수는 그 바로 앞에 있는 경우가 많습니다. 속성 사이의 쉼표 누락, 닫히지 않은 따옴표나 괄호, 마지막 쉼표, 큰따옴표 대신 쓴 작은따옴표 등이 대표적입니다. 하나의 실수가 다른 오류를 가릴 수 있으니 첫 번째 오류를 고친 뒤 다시 확인하세요. 큰 파일의 오류 보고에는 JSON 유효성 검사기가 특화되어 있습니다.

JSON 정렬과 유효성 검사는 어떻게 다른가요?

정렬은 들여쓰기, 줄바꿈, 필요하면 키 순서처럼 JSON의 겉모습만 바꾸고 데이터는 바꾸지 않습니다. 유효성 검사는 텍스트가 애초에 올바른 JSON인지 확인하며, 스키마 검증은 한 걸음 더 나아가 올바른 JSON이 기대한 필드, 타입, 값을 갖췄는지 확인합니다. 포매터는 먼저 JSON을 파싱해야 하므로 부수적으로 구문을 검사하지만, price가 문자열이 아니라 숫자여야 한다는 사실까지는 알려 주지 못합니다.

무료 온라인 JSON 포매터가 있나요?

네, 바로 이 도구입니다. SDETRole의 JSON 포매터는 무료이고 가입이 필요 없으며 전부 브라우저에서 실행되므로 붙여 넣은 내용은 업로드되지 않습니다. 브라우저의 Network 탭에서 직접 확인할 수 있습니다. JSON 정렬, 압축, 유효성 검사를 지원하고 구문 오류의 줄과 열을 알려 줍니다. 관련 무료 도구로는 페이로드 비교용 JSON 비교 도구, 값 추출용 JSONPath 테스터, JSON CSV 변환기가 있습니다.

마지막 쉼표나 작은따옴표가 있으면 왜 JSON이 실패하나요?

엄격한 JSON(RFC 8259)은 마지막 쉼표, 작은따옴표 문자열, 주석, 따옴표 없는 키를 허용하지 않습니다. 이는 JavaScript 객체 리터럴의 기능입니다. 이를 제거하거나 API 담당자에게 유효한 JSON을 반환하도록 요청하세요.

키를 정렬하면 JSON의 의미가 바뀌나요?

아니요. JSON에서 객체 키 순서는 의미가 없으므로 비교 목적으로 정렬해도 안전합니다. 배열 순서는 의미가 있으므로 절대 바꾸지 않습니다.

SDETRole 전체에서 검색할 내용을 입력하세요.

Pagefind 전문 검색 · 브라우저에서 실행됩니다 검색 페이지 열기 →