JSON には日時型が無いため、任意の日時形式の文字列や Unix time の整数型で表現したりします。
一方 YAML の方は日時型に対応していることを知り衝撃を受けたので、対応するデータ型の違いを比較してみました。
対応データ型の比較表
YAML は JSON のスーパーセット のため、JSON で表現できるものは基本的に全て YAML でも表現出来ます。
型名 | Type name | YAML | JSON | 値の例 |
---|---|---|---|---|
文字列 | string | ○ | ○ | "apple" |
整数 | integer | ○ | ○ | 123456 |
浮動小数点 | float | ○ | ○ | 123.456 |
真偽値 | boolean | ○ | ○ |
true , false
|
Null値 | null | ○ | ○ | null |
配列 | array (sequence) | ○ | ○ | ["value1", "value2"] |
オブジェクト | object (map) | ○ | ○ | {"key": "value"} |
タイムスタンプ | timestamp | ○ | ✕ |
2002-12-14 2002-12-14 10:00:00
|
上記に記載した型は全てではありません。
YAML で表現できる全ての型を知りたい場合は以下も参照してみてください。
タイムスタンプ型の YAML 記述例
canonical: 2001-12-15T02:59:43.1Z
valid_iso8601: 2001-12-14t21:59:43.10-05:00
space_separated: 2001-12-14 21:59:43.10 -5
no_time_zone: 2001-12-15 2:59:43.10
no_time: 2002-12-14
特徴を掻い摘むと、
- 秒の少数まで指定できます。
- タイムゾーンの指定もできます。省略すると UTC と見なされます。
- 時刻以降の部分を省略すると 00:00:00 UTC と見なされます。
といった感じです。
詳しくは YAML の Timestamp 型の仕様書(原典) を参照するのが最も正確でしょう。
尚、日時形式の文字列をダブルクォーテーションで囲むと普通に文字列型として扱われます。