JSON, YAML, CSV는 모두 구조화된 데이터를 저장하지만 서로 바꿔 사용할 수는 없습니다. 동일한 사람 기록은 중첩된 주소, 입력된 부울, 구성의 설명 또는 팀원이 Excel에서 열 수 있는 스프레드시트가 필요할 때까지 세 가지 모두에서 깔끔하게 보입니다. 잘못된 형식을 선택하면 유형이 손실되고, 트리가 이상한 열로 평면화되거나, 국가 코드 NO를 false로 바꾸는 YAML과 같은 파서가 발생합니다. 이 가이드에서는 JSON, YAML, CSV를 나란히 배치하고 각 항목이 승리하는 시기를 보여주며 ToolsMinify의 무료 변환기를 연결합니다.
빠른 답변
API 및 기계 교환에 JSON을 사용하세요. 엄격하고, 충분히 입력되었으며, 보편적입니다. 주석과 앵커를 원하고 문서를 작게 유지하려면 사람이 편집하는 구성에 YAML을 사용하세요. 사람들이 스프레드시트에서 여는 플랫 테이블에는 CSV를 사용하세요. JSON-CSV 변환기와 YAML-JSON 변환기를 사용하여 둘 사이를 변환하세요. JSON 축소기 및 포맷터를 사용하여 페이로드를 정리하세요.
세 가지 형식 모두에서 동일한 레코드
ID, 이름, 활성 플래그, 태그 등 하나의 객체로 시작하세요. 다음은 해당 레코드가 각 형식에서 어떻게 보이는지 보여주기 때문에 구문을 한눈에 비교할 수 있습니다.
JSON
- {"id": 42, "name": "Ada", "active": true, "tags": ["admin", "beta"]}
- 따옴표 붙은 키, 필드 사이의 쉼표, 배열의 대괄호, 리터럴로서의 true/false/null.
- 댓글이 없습니다. 표준 JSON에서는 후행 쉼표가 유효하지 않습니다.
YAML
- 아이디: 42
- 이름: 아다
- 활성: 사실
- 태그:
- - 관리자
- - 베타
- 들여쓰기는 구조를 정의합니다. 인용문은 선택 사항인 경우가 많습니다. 댓글은 #으로 시작합니다.
CSV
- ID,이름,활성,태그
- 42,Ada,true,"관리자;베타"
- 헤더 행 1개, 레코드당 행 1개. 중첩 배열은 병합된 문자열이나 추가 열이 됩니다. 텍스트 이외의 기본 유형은 없습니다.
이미 JSON 객체 배열을 보고 계시나요? 이를 JSON-CSV 변환기에 붙여넣어 스프레드시트 친화적인 테이블을 생성하세요. 구성을 다른 방향으로 이동하시겠습니까? JSON만 사용하는 API 클라이언트 이전에 YAML to JSON 변환기를 사용하세요.
JSON: API 및 교환 기본값
JSON(JavaScript Object Notation)은 모든 주요 언어가 구문 분석할 수 있는 JavaScript 개체 구문의 하위 집합입니다. 객체, 배열, 문자열, 숫자, 부울 및 null이 일류입니다. 중첩은 무제한이므로 사용자 개체 내부의 주소 개체는 당연합니다. 이것이 REST 및 GraphQL 응답, 웹훅 본문 및 많은 구성 저장소가 JSON을 제공하는 이유입니다.
- 최적의 대상: API 요청 및 응답 본문, 브라우저 및 모바일 클라이언트, 메시지 대기열, 여러 언어를 통해 왕복해야 하는 모든 것.
- 장점: 엄격한 문법, 예측 가능한 유형, 뛰어난 도구, 쉽게 축소하고 예쁘게 인쇄할 수 있습니다.
- 제한: 주석 없음, 이스케이프 없는 여러 줄 문자열 없음, 앵커 또는 병합 없음. 사람이 큰 JSON을 직접 편집하면 시끄러운 차이가 발생합니다.
페이로드가 하나의 압축된 줄로 도착하면 JSON 축소기 및 포맷터를 열어서 아름답게 만들고 중괄호를 확인한 다음 배송하기 전에 다시 축소하세요.
YAML: 구성 담당자가 실제로 편집함
YAML(YAML Ain't Markup Language)은 인간을 위해 먼저 설계되었습니다. 들여쓰기는 대부분의 중괄호를 대체합니다. #으로 주석을 남길 수 있고, |로 여러 줄 블록을 작성할 수 있습니다. 또는 >를 선택하고 앵커(&name) 및 별칭(*name)을 사용하여 블록을 재사용합니다. 이러한 조합으로 인해 YAML은 Kubernetes 매니페스트, Docker Compose, GitHub Actions 및 많은 앱 구성 파일의 기본값이 되었습니다.
댓글 및 앵커
댓글은 JSON에 없는 기능입니다. #으로 시작하는 줄은 런타임 데이터를 변경하지 않고 시간 초과가 30초인 이유를 문서화합니다. 앵커는 더 나아갑니다. &logging을 사용하여 공유 로깅 블록을 한 번 정의한 다음 *logging을 사용하여 여러 서비스로 가져오고 선택적으로 키를 <<:로 오버레이합니다. 조심스럽게 사용하면 앵커가 중복을 잘라냅니다. 부주의하게 사용하면 파일을 읽기 어렵게 만들고 Git에서 병합하기가 어려워집니다.
- 최적의 용도: 배포 및 CI 구성, 사람이 편집하는 기능 플래그, 가독성이 와이어 크기보다 뛰어난 작은 문서.
- 장점: 주석, 앵커/별칭, 여러 줄 문자열, 구두점 노이즈 감소.
- 제한 사항: 들여쓰기 버그, 암시적 입력 오류, 안전하지 않은 로더로 신뢰할 수 없는 YAML을 구문 분석하는 경우 더 큰 공격 표면이 발생합니다.
CSV: 스프레드시트용 플랫 테이블
CSV(쉼표로 구분된 값)는 열과 행으로 구성된 그리드입니다. 스프레드시트, BI 도구 및 데이터 파이프라인은 이를 이해합니다. 중첩된 개체, 배열 유형 및 일반적으로 부울 유형이 없습니다. 가져오기 도구가 캐스팅할 때까지 모든 것이 텍스트입니다. 데이터가 이미 사용자 또는 주문 테이블인 경우에는 괜찮습니다. 소스가 트리일 때 분해됩니다.
CSV가 유형과 중첩을 잃는 이유
- 유형: "42", 42 및 true는 스키마를 정의하지 않는 한 모두 문자열로 도착합니다. ID와 전화번호의 앞에 오는 0은 Excel에서 제거됩니다.
- 중첩: 거리와 도시가 포함된 주소는 address.street 열, 한 셀의 JSON blob 또는 중복된 상위 행이 됩니다.
- 배열: 태그는 나중에 분할해야 하는 구분 기호(admin;beta)가 있는 단일 셀이 되는 경우가 많습니다.
- Null 대 비어 있음: 빈 셀은 Null, 빈 문자열 또는 누락된 열을 의미할 수 있습니다. 규칙은 다릅니다.
소스가 중첩된 JSON인 경우 JSON을 CSV로 변환기를 사용하여 의도적으로 변환하고 파일을 스프레드시트에 전달하기 전에 배열과 중첩 키를 평면화하는 방법을 결정하세요.
각 형식이 올바른 선택일 때
API 및 기계 대 기계
JSON을 선호합니다. 클라이언트는 애플리케이션/json을 기대하고 도구는 어디에나 있으며 유형 시스템은 대부분의 계약에 충분합니다. HTTP 본문으로서의 YAML은 드물며 일반적으로 실수입니다. API 응답으로서의 CSV는 Excel 또는 데이터 웨어하우스에 피드를 제공하는 대량 내보내기 끝점에만 적합합니다.
구성 파일
사람이 파일을 편집하고 주석이 필요한 경우 YAML(또는 TOML과 같은 형식화된 형식)을 선호합니다. 구성이 생성되거나, 스키마로 검증되거나, 대부분 도구로 편집되는 경우 JSON을 선호합니다. YAML 문서를 작게 유지하고 검토하세요. 깊은 앵커와 사용자 정의 태그는 오래되지 않습니다.
스프레드시트 및 분석
소비자가 Excel, Google Sheets 또는 SQL COPY인 경우 CSV(또는 실제 스프레드시트 형식)를 선호합니다. 먼저 모델을 평면화하세요. 기록 시스템을 위해 JSON을 유지하고 CSV를 보기로 내보냅니다.
경험 법칙
교환용 JSON, 인간 구성용 YAML, 테이블 형식 내보내기용 CSV. 경계에서 변환 - 하나의 형식으로 세 가지 작업을 모두 수행하도록 강요하지 마십시오.
클래식 트랩
YAML의 노르웨이 문제
YAML 1.1에서는 따옴표가 없는 여러 문자열이 부울(yes, no, on, off, true, false 및 일부 로케일 변형)로 구문 분석됩니다. 노르웨이의 국가 코드 NO는 부울 false가 됩니다. 1.10과 같은 버전 문자열은 부동 소수점이 될 수 있습니다. 실제 문자열인 경우 부울, 숫자 또는 날짜처럼 보이는 값을 인용하세요(국가: "NO"). 가능하다면 YAML 1.2 파서를 선호하고 의심스러운 스칼라를 인용하세요.
인용된 필드 내의 CSV 쉼표
쉼표, 따옴표 또는 줄 바꿈이 포함된 필드는 큰따옴표로 묶어야 합니다. 필드 안의 인용문은 "Ada ""Lovelace"""처럼 두 배로 늘려서 이스케이프됩니다. 쉼표로 순진하게 분할하면 해당 행이 끊어집니다. JSON-CSV 변환기를 통해 왕복할 때를 포함하여 항상 실제 CSV 파서 또는 내보내기를 사용하십시오. 로캘 설정도 중요합니다. 일부 지역에서는 세미콜론 구분 기호를 사용하지만 Excel에서는 여전히 쉼표가 필요하며 그 반대도 마찬가지입니다.
기타 문제
- JSON: JavaScript 객체 리터럴의 후행 쉼표와 주석은 엄격한 파서에 실패합니다.
- YAML: 탭과 공백, 태그를 실행하는 안전하지 않은 로더, 병합 실수를 숨기는 거대한 문서.
- CSV: 인코딩, 구분 기호 또는 줄 끝을 위한 단일 표준이 없습니다. 항상 UTF-8과 구분 기호를 문서화하세요.
나란히 비교
- 중첩 - JSON 및 YAML: 자연 트리. CSV: 구조를 평면화하거나 잃습니다.
- 유형 - JSON: 문자열, 숫자, bool, null, 배열, 개체. YAML: 더 풍부한 스칼라(그리고 놀라움). CSV: 전송될 때까지의 텍스트입니다.
- 설명 - JSON: 없음. YAML: 댓글 #개. CSV: 표준 설명이 없습니다.
- 인간 편집 - 일반적으로 YAML이 승리합니다. JSON은 작은 파일에는 괜찮습니다. CSV는 스프레드시트 내에서 승리합니다.
- 유선/API - JSON이 기본값입니다. YAML 및 CSV는 극단적인 경우입니다.
- 도구 - JSON을 CSV로 및 YAML을 JSON으로를 사용하여 변환합니다. JSON Minifier & Formatter를 사용하여 JSON 형식을 지정하세요.
자주 묻는 질문
YAML이 JSON보다 나은가요?
주석이 포함된 사람이 편집한 구성의 경우 대개 그렇습니다. API 및 교환의 경우 JSON이 더 좋습니다. 더 엄격하고 예측 가능하며 보편적으로 지원됩니다. 많은 팀이 YAML을 작성하고 런타임을 위해 JSON으로 컴파일하거나 변환합니다.
CSV가 중첩된 JSON을 나타낼 수 있나요?
평탄화로만 가능합니다. 중첩된 개체는 점으로 구분된 열 또는 셀 내 JSON 문자열이 됩니다. 배열은 구분된 목록이나 반복되는 행이 됩니다. 전체 트리를 보존해야 할 때가 아니라 소비자에게 테이블이 필요할 때 CSV를 사용하세요.
구성을 JSON으로 저장해야 하나요, 아니면 YAML로 저장해야 하나요?
사람들이 매주 편집하고 댓글을 남기면 YAML(또는 TOML)이 됩니다. 스키마 유효성 검사기 또는 codegen이 파일을 소유한 경우 JSON. 동일한 진실 소스에 대해 두 가지를 혼합하지 마십시오.
YAML의 노르웨이 문제는 무엇입니까?
따옴표가 없는 NO(및 유사한 토큰)는 YAML 1.1에서 부울 false로 구문 분석될 수 있습니다. 국가 코드 및 기타 문자열 스칼라를 인용하거나 이를 문자열로 처리하는 YAML 1.2 파서를 사용하세요.
이러한 형식 간에 어떻게 변환합니까?
API 형태로 구성하려면 YAML-JSON 변환기를 사용하고, 테이블 형식 내보내기에는 JSON-CSV 변환기를 사용하세요. JSON 축소기 및 포맷터를 사용하여 JSON을 아름답게 하거나 축소하세요. 세 가지 모두 브라우저에서 실행됩니다.
ToolsMinify에서 JSON, YAML 및 CSV 변환
아래의 모든 도구는 브라우저에서 완전히 실행됩니다. 무료이며 가입이나 업로드가 필요하지 않습니다.
- JSON을 CSV로 변환기 - 개체의 JSON 배열을 다운로드 가능한 CSV 테이블로 변환합니다.
- YAML-JSON 변환기 - API 및 유효성 검사기에 대해 YAML 구성을 JSON으로 구문 분석합니다.
- JSON 축소기 및 포맷터 - JSON을 예쁘게 인쇄하거나 축소하고 구문 오류를 조기에 포착하세요.
- 모든 변환기 도구 - 전체 카테고리 색인.
무료로 사용해 보세요
JSON to CSV 변환기 또는 YAML to JSON 변환기에 샘플을 붙여넣고 출력을 비교합니다. 모든 것이 장치에 유지됩니다.