JSON 위 TOML 의 가장 큰 이점: 진짜 날짜
Number
- 정수 — 64-bit signed.
42,-17,1_000_000(밑줄 자릿수 그룹화). 16 진/8 진/2 진 리터럴:0xff,0o755,0b1010. - Float — IEEE 754 double.
3.14,1e6,1.5e-3. 특수 값:inf,-inf,nan(literal — JSON 이 이건 허용 안 함).
Boolean
소문자로만 써. true 아니면 false 야. True 도 TRUE 도 yes 도 안 돼. 그래서 여기선 Norway 문제가 아예 일어날 수가 없어. 적는 방법이 하나뿐이거든.
날짜와 시간 — 킬러 feature
- Offset Date-Time — timezone 든 RFC 3339.
1979-05-27T07:32:00-08:00. 가장 정밀한 형태. - Local Date-Time — timezone 없음.
1979-05-27T07:32:00. - Local Date —
1979-05-27. - Local Time —
07:32:00.
이 날짜 타입들은 파싱하면 곧장 Python 의 datetime, Rust 의 chrono::DateTime, Go 의 time.Time 으로 떨어져. config loader 에 'ISO 8601 문자열을 파싱해서' 같은 코드를 쓸 일이 없어.
원칙: 데이터에 날짜가 있으면 JSON 보다 TOML 을 골라. JSON 은 '문자열로 쓰기로 하자' 는 약속을 두고 파싱을 한 번 더 거치게 만들지만, TOML 은 아무 손질 없이 타입이 잡힌 값을 내줘. 뒤따르는 코드가 짧아지고, 짧아진 만큼 버그도 줄어.