이 페이지의 코드가 시작되지 않았습니다.

index.html을 폴더에서 바로 열면 브라우저가 JavaScript 모듈을 막습니다. 그래서 파일을 골라도 아무 일도 일어나지 않아요. 폴더를 http로 띄워서 여세요:

powershell -ExecutionPolicy Bypass -File serve.ps1

그런 다음 http://localhost:8080/을 여세요.

YAML을 JSON으로 — 그리고 JSON을 다시 YAML로

양쪽 방향 모두, 그리고 각 방향이 무엇을 치르는지도 말해 줍니다. 그 어느 것도 남의 서버에 붙여 넣지 않습니다.

언어: 한국어
소스 보기
YAML과 JSON은 절대 업로드되지 않습니다. 서버가 아예 없으니까요.

변환은 문자열에 대한 산술이고, 그 일이 여기, 이 페이지에서 벌어집니다. 두 파서는 모두 손으로 쓴 것이고 src/에 있습니다. shared/parse-yaml.js와 shared/parse-json.js이며, 그 밖에는 아무것도 없습니다. 이 도구에는 네트워크 기능 자체가 없어서 가져올 것도 보낼 것도 없습니다. 그것이 이 사이트의 거의 어느 곳에서보다 여기서 더 무겁습니다. YAML 파일은 대개 배포 설정이고, 배포 설정은 대개 호스트 이름과 버킷 이름과 비밀로 가득하기 때문입니다.

실시간 확인: 확인 중…

오프라인: 확인 중…

말을 믿으실 필요는 없습니다. 개발자 도구를 열고 네트워크 탭을 보면서 무언가를 변환해 보세요. 어느 요청에도 붙여 넣으신 내용의 한 글자조차 실리지 않습니다. 아니면 인터넷을 끊고 그대로 변환해 보셔도 됩니다.

1 방향 고르기

들여쓰기 탭은 JSON에만 제공됩니다. YAML은 공백을 기준으로 정의되어 있고, 그 안에서 탭은 올바른 들여쓰기가 아닙니다.

모든 객체의 키를 정렬하기 코드 포인트가 아니라 키가 읽히는 방식에 따라서라, item2가 item10보다 앞에 옵니다.

2 붙여 넣기

비어 있음

3 결과 가져가기

아직 없습니다.

 

Markdown으로 보기

YAML을 업로드하지 않고 JSON으로 바꾸는 방법

  1. 방향을 고르세요. YAML에서 JSON으로 또는 JSON에서 YAML로. 메뉴 아래의 설명이 그 방향에서 무엇을 잃는지, 무언가를 붙여 넣기 전에 말해 줍니다. 붙여 넣은 뒤가 아니라요.
  2. 붙여 넣거나, 파일을 놓으세요. 선택해서 복사할 수 있는 것이면 무엇이든 됩니다. 선택기에 놓은 파일은 사용자의 브라우저가 읽어서 입력란에 넣습니다. 건너뛸 업로드 단계 자체가 없고, .json이나 .yaml 확장자면 방향까지 알아서 정해집니다.
  3. 들여쓰기를 고르세요. 공백 두 칸, 네 칸, 또는 탭. 탭은 JSON에만 제공됩니다. YAML은 공백을 기준으로 정의되어 있고, 그 안에서 탭은 올바른 들여쓰기가 아닙니다.
  4. 오류가 있는 자리에서 오류를 읽으세요. 여기서 실패한 파서는 ‘4193번 위치에 예기치 않은 토큰’ 대신, 무엇을 만났는지를 몇 행 몇 열인지와 함께 말해 줍니다. 대개 그것만으로 다른 것을 열지 않고도 설정 파일을 고칠 수 있습니다.
  5. 결과를 가져가세요. 복사하거나, 나온 형식의 이름이 붙은 파일로 내려받으세요.

자주 묻는 질문

제 YAML이 어딘가로 업로드되나요?

아닙니다. 이 페이지의 두 파서와 두 프린터는 사용자의 브라우저에서, 사용자의 하드웨어 위에서 도는 함수입니다. 이 도구에는 네트워크 기능 자체가 없어서 무언가를 가져오지도, 보내지도 않습니다. 페이지의 Content-Security-Policy에는 연결할 수 있는 모든 주소가 적혀 있고 그중 우리 것은 하나도 없습니다. 배포 설정에 이것을 쓰는 이유가 바로 그것입니다. 그런 파일은 호스트 이름과 버킷 이름으로, 가끔은 누군가 옮기려던 비밀로 가득하고, 그것을 남의 변환기에 붙여 넣는 것은 그 사람에게 주는 일입니다.

YAML을 JSON으로 바꾸면 무엇을 잃나요?

주석입니다. JSON에는 그것을 둘 자리가 없습니다. 앵커와 별칭과 태그는 짐작되는 대신 아예 거절됩니다. 저마다 JSON이 말할 수 없는 것을 말하고 있고, 조용히 해석 하나를 고른 변환기라면 파일이 말한 것이 아닌 문서를 건네줄 테니까요. 반대 방향은 아무것도 잃지 않습니다. 모든 JSON 문서는 이미 YAML 문서입니다.

제 YAML에는 no라고 썼는데 JSON은 문자열로 나왔습니다. 왜죠?

그것이 문자열이고, 여기서는 1.1이 아니라 YAML 1.2를 읽기 때문입니다. YAML 1.1에서는 yes, no, on, off가 불리언이었고, 그것이 노르웨이의 국가 코드를 false로 바꿔 버리는 그 유명한 버그입니다. YAML 1.2가 그것을 버렸고 여기서도 버렸습니다. 텍스트가 아닌 것으로 읽히는 것은 true, false, null, ~뿐입니다. 반대 방향에서는 그 낱말들을 따옴표를 붙여 되돌려 씁니다. 여기서는 따옴표가 없어도 텍스트로 읽겠지만, 그 파일을 다음에 여는 것은 그러지 않을 수도 있기 때문입니다. PyYAML은 아직도 1.1이 기본입니다. 엄격하게 읽고 조심스럽게 쓰는 것이 양쪽 모두에서 옳은 유일한 조합입니다.

키의 순서를 지켜 주나요?

네, 양쪽 방향 모두입니다. 그리고 그것은 들리는 것보다 어렵습니다. JSON.parse 위에 세운 변환기는 정수처럼 보이는 키를 조용히 앞으로 옮겨서, {"10":a,"2":b}가 {"2":b,"10":a}로 돌아옵니다. 숫자는 입력하신 자릿수를 그대로 지켜서, 스무 자리 계좌 아이디가 마지막 세 자리를 double에 빼앗기지 않습니다. 정렬을 원하시면 체크박스가 있고, 코드 포인트가 아니라 키가 읽히는 방식에 따라 정렬합니다.

여러 YAML 문서를 한 번에 바꿀 수 있나요?

아닙니다. 하나를 골라 버리는 대신 그렇다고 말합니다. --- 구분자가 있는 파일은 문서를 하나보다 많이 담고 있고, JSON에는 ‘여러 문서’를 뜻하는 모양이 없습니다. 배열로 만들면 파일이 한 적 없는 주장을 하는 셈이 됩니다. 하나씩 바꾸세요.

여기에는 왜 YAML 포맷터가 없나요?

YAML에는 쓸 만한 압축 형태가 없기 때문입니다. 짧은 쪽은 플로 스타일인데 읽을 수가 없고, 읽을 수 없다는 것은 파일을 YAML로 두는 이유의 정반대입니다. JSON, XML, HTML, CSS를 펼치는 일은 JSON 포맷터의 몫이고, 그쪽은 YAML도 펼칩니다.

얼마나 큰 파일까지 다룰 수 있나요?

여기에 걸어 둔 제한은 없습니다. 그 값을 치를 서버가 없기 때문입니다. 실제 한계는 사용자의 기기입니다. 몇 메가바이트짜리 YAML은 괜찮고, 아주 긴 문서에서는 키보드를 두고 다투는 대신 입력이 멎기를 기다렸다가 변환합니다.

무료인가요? 가입해야 하나요?

무료이고 계정도, 로그인도, 체험 기간도 없으며 얼마나 붙여 넣든 제한이 없습니다. 이 사이트에는 광고가 있고 그것이 비용을 댑니다. 광고에는 텍스트에 관한 것이 아무것도 주어지지 않습니다.

오프라인에서도 되나요?

됩니다. 페이지를 한 번 불러온 뒤 인터넷을 끊어도 계속 동작합니다. 이것이 아무것도 업로드되지 않는다는 가장 간단한 증명이기도 합니다. 설정을 변환하러 밖으로 보내는 도구라면 선을 뽑는 순간 멈췄을 것입니다.