TOON 형식 치트 시트

인도 마호가니
개발 도구

JSON이 너무 장황하지만(모든 중괄호!) YAML이 너무 "마법적"이고 예측 불가능하다고 느낀 적이 있다면 TOON과 사랑에 빠질 수도 있습니다. 이 형식은 사람의 가독성과 기계의 구문 분석 속도 사이에서 고유한 균형을 유지합니다. 밀도가 높고 명시적이며 분석 속도가 매우 빠르도록 설계되었습니다.

데이터를 마이그레이션하든 구성 파일을 디버깅하든 관계없이 이 치트 시트에서는 알아야 할 필수 구문을 다룹니다.

철학: 적은 소음, 더 많은 데이터

가장 먼저 눈에 띄는 점은 TOON이 YAML과 매우 비슷해 보이지만 엄격하게 JSON과 동일하게 동작한다는 것입니다. 들여쓰기와 줄 바꿈을 위해 여는 중괄호와 닫는 중괄호를 없애고 데이터를 즉시 더 깔끔하게 보이게 합니다.

객체 및 중첩

JSON에서는 모든 것을 중괄호로 묶는 데 익숙합니다. TOON에서는 들여쓰기로 구조를 암시합니다.

제이슨:

``MD { "프로젝트": { "메타데이터": { "name": "알파-센타우리", "상태": "활성" }, "마일스톤": [ { "단계": "설계", "우선순위": 1 }, { "단계": "테스트", "우선순위": 2 } ] } }

인도 마호가니:

``MD 프로젝트: 메타데이터: 이름: 알파-센타우리 상태: 활성 이정표[2]{단계,우선순위}: 디자인,1 테스트,2

키에 특수 문자가 포함되어 있지 않으면 키에 따옴표가 필요하지 않으며 계층 구조가 시각적으로 명확합니다.

배열의 힘

TOON이 다른 형식과 실제로 다른 점은 바로 이 부분입니다. TOON에서는 키 자체에서 배열의 길이를 선언해야 합니다. 처음에는 이상해 보일 수도 있지만 파서가 메모리를 사전 할당할 수 있어 속도가 엄청나게 빨라집니다.

기본 배열

간단한 문자열이나 숫자 목록의 경우 TOON은 쉼표로 구분된 간단한 구문을 사용합니다.

구문:

``MD 키[길이]:항목1,항목2,항목3

루트 배열이 있는 경우(전체 파일은 단지 목록일 뿐임) 다음과 같습니다.

테이블 형식 배열(최고의 기능)

이는 일반적으로 개발자의 마음을 사로잡는 기능입니다. 동일한 키(예: 데이터베이스의 행)를 공유하는 객체 배열이 있는 경우 TOON을 사용하면 헤더에 스키마를 한 번 정의한 다음 값만 나열할 수 있습니다. 이는 JSON에서 발견된 엄청난 양의 중복성을 제거합니다.

구문:

``MD 키[행]{col1,col2}:

제이슨:

``MD { "인벤토리": [ { "sku": "KB-99", "수량": 50, "통로": 4, "재주문": 거짓 }, { "sku": "MS-12", "수량": 12, "복도": 7, "재주문": 사실 }, { "sku": "MN-44", "수량": 8, "통로": 2, "재주문": 사실 } ] }

인도 마호가니:

``MD 재고[3]{sku, 수량, 통로, 재주문}: KB-99,50,4,거짓 MS-12,12,7,참 MN-44,8,2,참

이 "CSV-inside-YAML" 접근 방식은 대규모 데이터 세트를 놀라울 정도로 읽기 쉽고 컴팩트하게 만듭니다.

혼합 및 중첩 배열

데이터가 일정하지 않은 경우도 있습니다. 배열에 다양한 유형의 데이터(개체와 혼합된 숫자)가 포함되어 있거나 복잡하게 중첩된 개체가 포함된 경우 TOON은 하이픈을 사용하는 글머리 기호 스타일 구문으로 대체됩니다.

배열 안에 배열을 가질 수도 있습니다. 내부 배열이 길이를 어떻게 선언하는지 참고하세요.

인용: 언제 사용해야 할까요?

TOON의 가장 좋은 점 중 하나는 인용문이 거의 필요하지 않다는 것입니다. ""로 묶지 않고 Hello 世界 👋을 쓸 수 있습니다. 그러나 TOON은 유형(숫자, 부울)을 추론하려고 시도하므로 따옴표를 반드시 사용해야 하는 경우에 대한 특정 규칙이 있습니다.

"필수 인용" 목록

다음과 같은 경우 문자열을 큰따옴표 ""로 묶어야 합니다.

  1. 숫자나 부울값처럼 보입니다. "123" 또는 "true" 문자열을 원하면 인용하세요. 그렇지 않으면 숫자 '123'과 부울 'true'가 됩니다.
  1. 구분 기호가 포함되어 있습니다. 문자열에 쉼표 ,(또는 활성 구분 기호가 무엇이든)가 있는 경우 이를 인용하십시오.
  1. 공백 가장자리가 있습니다. 선행 또는 후행 공백에는 따옴표가 필요합니다.
  1. 특수 문자가 포함되어 있습니다: :, ", \, [, ], {, }와 같은 문자.
  1. 비어 있음: 빈 문자열은 ""로 표시됩니다.

예:

이스케이프 시퀀스

간단하게 유지하세요. TOON은 문자열 내에서 5개의 이스케이프 시퀀스만 인식합니다. 다른 것은 유효하지 않습니다.

  • \\(백슬래시)
  • \"(큰따옴표)
  • \n(줄바꿈)
  • \r(캐리지 리턴)
  • \t(탭)

고급 헤더 및 구분 기호

데이터가 쉼표로 가득 차 있다면 어떻게 될까요? 모든 단일 필드를 인용하고 싶지는 않습니다. TOON을 사용하면 배열 헤더의 구분 기호를 변경할 수 있습니다.

또는 **파이프(|)**를 대괄호 또는 중괄호 안에 배치하여 사용할 수 있습니다.

파이프 구분 기호 예:

헤더에 '|'를 추가하면 파서는 쉼표 대신 파이프를 찾는 방법을 알고 구문을 깨끗하게 유지합니다.

키 접기

깊은 중첩이 있지만 데이터 경로가 하나뿐인 경우에는 다섯 번 들여쓰기할 필요가 없습니다. 점 표기법(키 접기)을 사용하여 구조를 평면화할 수 있습니다.

표준 중첩:

``MD 사용자: 프로필: 설정: 알림: 이메일: 사실 SMS: 거짓

접힌 상태(클리너):

``MD user.profile.settings.notifications: 이메일: 사실 SMS: 거짓

빠른 유형 참조

TOON은 JSON 유형에 직접 매핑되지만 유효한 출력을 보장하기 위해 JavaScript 관련 엣지 케이스를 우아하게 처리합니다.

  • 숫자: 표준 소수로 저장됩니다. '1.0'은 '1'이 됩니다.
  • Infinity / NaN: JSON이 이를 지원하지 않기 때문에 'null'이 됩니다.
  • 날짜: 인용된 ISO 문자열로 변환됩니다.
  • 정의되지 않음/함수: null로 변환됩니다.
  • 빈 객체: 아무것도 아닌 것으로 표현됩니다(빈 출력).
  • 빈 배열: key[0]:로 표시됩니다.

TOON은 정확성을 보상하는 형식입니다. 배열 항목 수를 세는 데 익숙해지는 데 시간이 좀 걸릴 수 있지만 가독성과 파일 크기 측면에서 그만한 가치가 있습니다. 즐거운 코딩하세요!