YAML 변환
YAML ↔ JSON · YAML → Properties · 여러 문서, 앵커, 행과 열 오류 표시
.inf / .nan 因为 JSON 没有这两个值会变成 null。如果你要的是"把 YAML 存回去还跟原来一模一样",本页做不到,任何转换工具都做不到。
입력
粘贴 YAML选项切换方向后选项会跟着变
YAML 的锚点与别名在解析阶段就展开成真实值,所以这里没有「保留引用」开关——JSON 里也没有引用这个概念。为什么没有 noRefs 开关:js-yaml 的 noRefs 只对「含共享引用的 JS 对象」生效,而本页输入是文本(YAML 锚点已被展开、JSON 没有引用语义),开关不会产生任何可观察差异,故不提供。
行宽只影响长字符串的换行方式:超过行宽时 js-yaml 会用折叠块(>-)折行。语义不变,但看起来会和你手写的 YAML 不一样。
嵌套对象用点连接(spring.datasource.url)。只有一份文档能转:多文档(---)没有对应的键值形式,会明确报错。空对象与空数组在 .properties 里无法表示,会被跳过并在结果里计数。
결과
类型边界:YAML 会把这些写成什么
本页按 YAML 1.2 的 core schema 解析(js-yaml 4.x 默认行为)。下面每一条都是本页实测结果,不是"按印象写的":
| YAML 写法 | 解析成 | 转成 JSON |
|---|---|---|
| true / false / True / TRUE | 布尔 | true / false |
| yes / no / on / off / YES | 字符串 | "yes" 等——YAML 1.2 里这些不是布尔(1.1 才是) |
| 007 | 数字 7 | 7(不是八进制;八进制要写 0o17) |
| 0x1F | 数字 31 | 31 |
| 1e3 | 数字 1000 | 1000 |
| 00123 这类要保留前导零的编号 | 数字 123 | 123——要保号请写成 "00123"(带引号) |
| 2024-01-02 / 2024-01-02 03:04:05 | 时间戳(Date) | "2024-01-02T00:00:00.000Z"(ISO 字符串) |
| ~ / null / 空值 | null | null |
| .inf / -.inf / .nan | ±Infinity / NaN | null——JSON 没有这两个值,信息会丢 |
| 123456789012345678901234567890 | 双精度近似值 | 1.2345678901234568e+29——长 ID 请写成字符串 |
| "007"(带引号) | 字符串 "007" | "007" |
| 块标量 | | 保留换行的字符串 | 带 \n 的字符串 |
| 块标量 > | 换行折叠成空格 | 单行字符串 |
자주 묻는 질문
사라지거나 펴져요. YAML 주석은 사람 보라고 두는 건데 JSON 에는 주석 개념이 아예 없어요—바꾸면 반드시 사라져요. '설정은 YAML, 데이터 전송은 JSON'으로 나누는 이유 중 하나예요. 앵커와 별명 (&x / *x) 은 읽는 단계에서 실값으로 펴지고, 모든 참조가 각자 독립 복사가 돼요—데이터는 같은데 크기는 늘고 재사용 관계는 안 남아요. 여러 문서 (--- 로 나눔) 는 순서대로 JSON 배열이 되고, 문서 수만큼 요소가 들어가요.
이 페이지는 YAML 1.2 핵심 스키마 (js-yaml 4.x 기본 동작) 를 써요—참거짓은 true / false (True / False / TRUE / FALSE 까지) 뿐이고, yes / no / on / off 같은 YAML 1.1 시절 표기는 그냥 문자열이에요. 같은 이유로 007 은 숫자 7 (8 진수 아님), 0x1F 는 31, 2024-01-02 같은 날짜는 시각표로 인식돼 JSON 에서 ISO 문자열이 되고; .inf / .nan 은 YAML 에선 숫자이나 JSON 에 그런 값이 없어 null 로 바뀝니다—이 경계들은 전부 페이지 위쪽 표에 조항별로 적어 뒀어요.
납작한 키 경로로 만들어요—중첩은 점으로 잇고 (spring.datasource.url), 배열은 기본이 대괄호 번호 (list[0], list[1]; 배열 안 객체는 그대로 점 연결, users[0].name 등), 점 번호 (list.0) 로도 바꿔요. 값 속 역슬래시·줄바꿈·탭·앞쪽 공백은 java.util.Properties 규칙대로 풀어쓰고, 중국어는 기본 그대로 둬요 (Java 8 이후 UTF-8 로 읽기 문제없어요), 오래된 도구용으론 '중국어 \uXXXX 바꾸기' 체크가 있어요. 빈 객체·빈 배열은 .properties 에 표기법이 없어서 건너뛰어지고 결과에 개수로 밝혀져요.
안 올라가요. 풀이·변환·생성 전부 브라우저에서 끝나요—설정 내용이 기기 밖 안 나가고 새로고침하면 지워지고, 네트워크 요청은 하나도 안 나가요 (js-yaml 도 이 사이트가 자체 보관한 파일이라 CDN 안 타요). 반대 방향 Properties→YAML 은 굳이 안 해요—'키 경로를 중첩으로 되돌리려면' 어느 점이 층위이고 어느 게 키 이름 일부인지 추측해야 해요 (a.b.c 가 a 아래 b 아래 c 인지, 이름이 통째로 a.b.c 인 키 하나인지), 틀리면 설정 뜻을 말없이 바꿔 버리거든요. 이 단계는 손으로 정리하거나 Spring Boot 같은 프레임워크 바인딩에 맡기세요.