FracturedJson

1 month ago 10

  • JSON 데이터를 사람이 읽기 쉽게 정렬하면서도 압축된 형태로 유지하는 포매팅 유틸리티 모음
  • 배열과 객체를 가능한 한 한 줄로 표현하고, 구조가 유사한 경우 테이블 형태로 정렬
  • 주석 보존 기능을 지원하며, JSON 표준에는 없지만 실제 사용 환경에서 흔한 주석을 함께 유지
  • .NET 라이브러리, JavaScript/TypeScript 패키지, VS Code 확장, 브라우저 포매터 등 다양한 환경에서 사용 가능
  • 기존 JSON 포매터의 가독성 한계를 개선해, 개발자와 데이터 분석가의 시각적 이해도를 높이는 도구

FracturedJson 개요

  • FracturedJson은 사람이 읽기 쉬우면서도 비교적 컴팩트한 JSON 포맷을 생성하는 유틸리티 모음
    • 배열과 객체는 너무 길거나 복잡하지 않으면 한 줄로 출력
    • 구조가 유사한 여러 줄은 필드를 정렬해 표 형태로 표시
    • 긴 배열은 여러 줄에 걸쳐 여러 항목을 한 줄에 배치
  • 다양한 설정을 통해 출력 형식을 제어할 수 있으며, 대부분의 경우 기본 설정만으로도 보기 좋은 결과 생성
  • 브라우저 기반 포매터 페이지, .NET 라이브러리, JavaScript/TypeScript 패키지, VS Code 확장으로 제공
  • Python용 옵션도 별도로 안내되어 있음

Motivation

  • 대부분의 JSON 라이브러리는 두 가지 형식만 제공
    • Minified JSON: 효율적이지만 사람이 읽기 어려움
    • Beautified/Indented JSON: 지나치게 넓게 퍼져 있어 빠른 파악이 어려움
  • FracturedJson은 사람이 직접 작성하듯 데이터를 포맷
    • 너무 복잡하거나 긴 경우를 제외하고 컨테이너를 한 줄로 유지
    • 유사한 배열이나 객체는 테이블 형태로 정렬

작동 방식 (How It Works)

  • FracturedJson은 네 가지 포매팅 유형을 사용
    1. Inlined: 짧고 단순한 객체나 배열을 한 줄로 표현
      • MaxInlineComplexity 설정으로 허용되는 중첩 수준 제어
    2. Compact Multiline Array: 여러 항목을 한 줄에 배치하되 여러 줄로 나누어 표시
      • MaxCompactArrayComplexity로 중첩 허용도 조정, -1로 비활성화 가능
    3. Table: 유사한 구조의 항목을 열 맞춤 형태로 정렬
      • 내부 컨테이너가 너무 복잡할 경우 일부만 축소
      • MaxTableRowComplexity와 TableCommaPlacement로 제어 가능
    4. Expanded: 위 조건에 맞지 않는 경우, 각 항목을 여러 줄로 들여쓰기하여 표시

주석 처리

  • JSON 표준은 주석을 허용하지 않지만, FracturedJson은 주석 보존 기능을 지원
    • 주석은 관련된 요소와 함께 유지되며, 다중 행 주석과 인라인 주석 모두 처리 가능

Discussions

  • 사용자 질문, 피드백, 제안 등을 위한 GitHub Discussions 공간 제공
  • 프로젝트 관련 토론 및 개선 제안 가능

Read Entire Article