한국어

개발자 도구 · JSON 포맷터 및 유효성 검사기

JSON 예쁜 인쇄 작동 방식: 들여쓰기, 공백 및 키 순서

· 작동 방식

JSON 개발자 워크플로 검증

JSON 예쁜 인쇄 작동 방식: JSON 토큰과 정확한 유효성 검사 경계로 설명된 들여쓰기, 공백 및 키 순서
원본 ToolAcre 벡터 일러스트레이션

예쁜 인쇄는 아주 작은 공백만 변경하지만 사람들은 데이터가 변경될까봐 걱정합니다. 이 게시물에서는 포맷터가 어떤 작업을 할 수 있는지, 들여쓰기 깊이가 어떻게 적용되는지, 키 순서는 어떻게 되는지 설명합니다.

동일한 데이터, 세 가지 다른 모습

동일한 데이터, 세 가지 다른 모양 — 컴팩트 API 페이로드는 한 줄을 차지하거나, 각 깊이에 두 개의 공백으로 확장하거나, 네 개로 더 멀리 퍼질 수 있습니다. 중괄호, 대괄호, 이름 및 값은 모든 버전에서 동일한 구문 분석 구조를 설명합니다. 구조적 토큰 사이의 줄바꿈과 간격만 다릅니다. 포맷터 출력을 검토할 때 이러한 구별이 중요합니다. 들여쓰기는 결과 값을 그대로 유지하면서 의도적으로 많은 바이트를 변경하기 때문에 더 큰 diff가 자동으로 데이터 변경이 되지는 않습니다.

ToolAcre는 2개, 4개 또는 8개의 공백과 탭을 제공한 다음 선택한 들여쓰기를 JSON.stringify에 전달합니다. 짧은 중첩 배포 기록을 통해 비교가 명확해집니다. 영역은 동일한 배열 순서로 유지되고 부울은 부울로 유지되며 재시도 횟수는 숫자로 유지됩니다.

JSON에서 중요하지 않다고 간주하는 공백

JSON이 중요하지 않다고 간주하는 공백 — RFC 8259은 구조 문자 앞이나 뒤에 공백, 가로 탭, 줄 바꿈 및 캐리지 리턴을 허용합니다. 따라서 포맷터는 값을 변경하지 않고 `{` 뒤에 줄바꿈을 배치하고, 중첩된 멤버 앞에 공백을 배치하고, `}` 앞에 또 다른 줄바꿈을 배치할 수 있습니다. 그러나 공백은 보편적으로 일회용이 아닙니다. 큰따옴표로 문자열을 열면 모든 일반 공백은 해당 문자열의 내용에 속하며 서식이 데이터와 동일하게 유지되어야 합니다.

가장 안전한 정신 모델은 문자열 내용에서 토큰 경계를 분리하는 것입니다. 콜론과 숫자 사이에 추가로 허용되는 공백이 표시됩니다. 인용된 메시지의 문자 사이에는 정보가 있습니다. ToolAcre는 먼저 소스를 구문 분석하고 결과 값을 직렬화하므로 JSON.stringify는 디코딩된 문자열 문자를 유지하면서 컨테이너 주위의 새로운 공백을 선택합니다.

들여쓰기 설정이 적용되는 방식

들여쓰기 설정이 적용되는 방법 — 각 중첩 컨테이너는 선택한 들여쓰기 단위의 복사본 하나를 추가합니다. 최상위 속성은 한 수준에서 시작됩니다. 개체 내부의 속성은 두 수준에서 시작합니다. 배열 내부의 객체는 또 다른 레벨을 추가합니다. 닫는 중괄호와 대괄호는 이를 소유한 컨테이너의 들여쓰기로 돌아갑니다. 따라서 너비는 키, 값 또는 이전 줄의 길이가 아닌 구조적 깊이를 반영합니다.

공백은 모든 편집기에서 고정된 시각적 너비를 생성하는 반면, 탭을 사용하면 각 뷰어가 한 레벨이 표시되는 너비를 선택할 수 있습니다. 또한 JavaScript는 JSON.stringify 들여쓰기를 10개의 공백 문자 또는 제공된 문자열의 처음 10자로 제한하지만 ToolAcre는 실용적인 사전 설정만 노출합니다.

서식을 지정하면 키 순서가 변경되나요?

서식을 지정하면 키 순서가 변경되나요? — 일반적인 예쁜 인쇄는 의도적으로 개체 구성원을 정렬하지 않습니다. JSON 개체는 개념적으로 순서가 지정되지 않은 컬렉션이지만 JavaScript 구문 분석 및 직렬화는 정의된 속성 열거 규칙을 사용합니다. 따라서 대부분의 정수가 아닌 키는 입력 순서대로 나타나는 반면, 정수형 키는 다른 이름보다 먼저 나타날 수 있습니다. 소비자는 포맷터가 익숙한 개체에 대해 일관되게 유지하는 것처럼 보일 때에도 구성원 위치에 비즈니스 의미를 부여해서는 안 됩니다.

ToolAcre는 들여쓰기와 정렬을 분리합니다. 정렬이 비활성화되면 구문 분석된 개체를 직접 직렬화합니다. 정렬이 활성화되면 JSON.stringify가 실행되기 전에 키가 알파벳순으로 정렬된 개체를 반복적으로 생성합니다. 배열을 재정렬하면 의미가 변경되므로 배열은 요소 순서를 유지합니다. 이 명시적 옵션은 검토 가능한 구별을 만듭니다. 공백 전용 출력은 예쁜 인쇄에서 나오는 반면, 키 순서 차이는 정식 구성 요청에서 나옵니다.

구문 분석 및 재직렬화 포맷터가 변경할 수 있는 것

구문 분석 및 재직렬화 포맷터가 변경할 수 있는 것 — 구문 분석된 값은 유지되지만 원래 철자는 유지되지 않습니다. `1.0`로 작성된 숫자는 `1`로 반환될 수 있고 `1e3`는 `1000`로 반환될 수 있습니다. 이스케이프된 인쇄 가능 문자는 문자 그대로 다시 나타날 수 있는 반면, 리터럴 문자는 직렬화가 필요할 때 이스케이프될 수 있습니다. 중복된 개체 이름은 구문 분석 중에 이미 축소되었으므로 최종 속성 값만 포맷터에서 사용할 수 있습니다.

이러한 변환은 형식이 지정된 출력을 바이트 보존 문서 편집기로 처리해서는 안 되는 이유를 설명합니다. 의미론적 동등성이 목표인 경우 구문 분석된 값을 비교하고 원본 표기법이 서명, 해싱 또는 감사 작업 흐름에 중요한 경우 텍스트 차이점을 검사합니다. JavaScript 숫자는 직렬화 전에 정밀도를 잃을 수 있으므로 매우 큰 정수에는 특별한 주의가 필요합니다.

작업 예: 중첩된 개체 형식 지정

작업 예: 중첩된 개체 서식 지정 — `{"service":{"regions":["sg","us"],"retry":{"count":3}}}`으로 시작하고 공백 두 개를 선택합니다. 여는 루트 중괄호 뒤에는 개행 문자가 옵니다. `service`은 두 개의 선행 공백을 받고 해당 하위 속성은 4개를 받으며 배열 요소는 6개를 받고 중첩된 `count` 속성도 6개를 받습니다. 각 쉼표는 렌더링된 멤버 하나를 끝내고 각 닫는 구분 기호는 여는 컨테이너의 들여쓰기 수준에 맞춰 정렬됩니다.

동일한 값을 탭으로 전환하면 각 수준에 사용되는 접두사만 변경됩니다. 키 정렬을 켜면 `regions`을 `retry` 앞에 추가로 배치할 수 있지만 배열은 여전히 ​​`sg`를 읽은 다음 `us`을 읽습니다. 유용한 검토는 두 단계로 출력을 확인합니다. 먼저 중첩 및 배열 순서가 원래 값을 나타내는지 확인한 다음 선택한 공백이 저장소에 맞는지 결정합니다.

여기서 다루지 않는 내용

여기서 다루지 않는 내용 - 키 정렬은 별도의 정규화 선택이고 축소는 반대 표시 작업입니다. 또한 예쁜 인쇄는 배열을 재정렬할 수 있는 권한을 부여하지 않습니다. 배열 위치는 데이터이므로 이를 변경하면 우선순위, 연대기 또는 프로그램 동작이 변경될 수 있습니다. 또한 들여쓰기는 구문 분석 전에 잘못된 소스를 유효하게 만들지 않습니다. 주석, 후행 쉼표 및 JavaScript 전용 값은 엄격한 JSON 포맷터가 직렬화할 수 있기 전에 실제 형식에 대해 파서에서 수정하거나 처리해야 합니다.

정식 JSON 체계는 정확한 멤버 순서, 숫자 철자 및 서명 또는 결정적 해시에 대한 이스케이프를 정의하여 일반적인 형식 지정보다 더 발전합니다. ToolAcre는 이러한 표준화 표준을 구현한다고 주장하지 않습니다. 선택적 재귀 키 정렬과 함께 JSON.parse 및 JSON.stringify를 사용하여 읽을 수 있는 브라우저 로컬 출력을 생성합니다.

요약: 예쁜 인쇄는 공백 변환입니다.

요약: 예쁜 인쇄는 공백 변환입니다. 그 목적은 표현된 값을 변경하지 않고 구조를 노출하는 것입니다. 들여쓰기 너비는 JSON 유효성이 아닌 가독성, 검토 노이즈 및 로컬 규칙에 영향을 미칩니다. 문자열 내부의 공백은 데이터로 남아 있고 배열 순서는 여전히 중요하며 객체 키 정렬에는 별도의 명시적인 선택이 필요합니다. 이러한 경계를 기억하면 포맷터 차이를 더 쉽게 평가할 수 있으며 외관상 변경 사항이 의미 체계 편집과 혼동되는 것을 방지할 수 있습니다.

구문 분석 및 재직렬화 도구는 원래 토큰 텍스트가 아닌 값에서 작동하기 때문에 여전히 숫자를 정규화하고 철자를 이스케이프할 수 있습니다. 어휘 충실도가 중요한 경우를 검토하고 일반적인 예쁜 출력을 서명의 표준 형식으로 사용하지 마십시오. 일상적인 구성 및 API 검사의 경우 팀에서 사용하는 들여쓰기를 선택하고, 원하지 않는 한 정렬을 그대로 두고, 로컬 형식을 지정하고, 내보낸 텍스트의 유효성을 검사하세요.