YAML Test Suite Test Cases | Schema examples | Schema comparison

The Perl Module YAML::PP implements YAML 1.2. You can choose between several Schemas.
The following table shows which strings result in which native data, depending on the Schema (or other YAML module) you use.
For each of the Schemas and modules, the first column is the type, and the second shows how the data is encoded into YAML again.
Note that the YAML 1.2 JSON Schema is not exactly like the official schema, as all strings would have to be quoted.

YAML::PPOther Perl Modules
Input YAMLFailsafe JSON Core YAML 1.1 YAML.pm YAML::Syck YAML::XS
TypeOutputTypeOutputTypeOutputTypeOutputTypeOutputTypeOutputTypeOutput
nullstrnull
null
null
null
null
null
strnull
~
null
~
#emptystrstrnull
null
null
null
strnull
~
null
~
NULLstrstrnull
null
null
null
strnull
~
str
Nullstrstrnull
null
null
null
strnull
~
str
~strstrnull
null
null
null
null
~
null
~
null
~
falsestrbool
false
bool
false
bool
false
strfloat
''
bool
false
truestrbool
true
bool
true
bool
true
strfloat
1
bool
true
FALSEstrstrbool
false
bool
false
strfloat
''
str
Falsestrstrbool
false
bool
false
strfloat
''
str
TRUEstrstrbool
true
bool
true
strfloat
1
str
Truestrstrbool
true
bool
true
strfloat
1
str
Nstrstrstrbool
false
strfloat
''
str
nstrstrstrbool
false
strfloat
''
str
NOstrstrstrbool
false
strfloat
''
str
nostrstrstrbool
false
strfloat
''
str
OFFstrstrstrbool
false
strfloat
''
str
Offstrstrstrbool
false
strfloat
''
str
offstrstrstrbool
false
strfloat
''
str
ONstrstrstrbool
true
strfloat
1
str
Onstrstrstrbool
true
strfloat
1
str
onstrstrstrbool
true
strfloat
1
str
Ystrstrstrbool
true
strfloat
1
str
ystrstrstrbool
true
strfloat
1
str
YESstrstrstrbool
true
strfloat
1
str
Yesstrstrstrbool
true
strfloat
1
str
yesstrstrstrbool
true
strfloat
1
str
-3.14strfloat
-3.14
float
-3.14
float
-3.14
float
-3.14
float
'-3.14'
float
-3.14
0.0strfloat
0.0
float
0.0
float
0.0
float
0
float
'0'
float
0.0
3.14strfloat
3.14
float
3.14
float
3.14
float
3.14
float
'3.14'
float
3.14
3.3e+3strfloat
3300.0
float
3300.0
float
3300.0
int
3300
float
'3300'
float
3.3e+3
Input YAMLFailsafe JSON Core YAML 1.1 YAML.pm YAML::Syck YAML::XS
+0.3e+3strstrfloat
300.0
float
300.0
strfloat
'300'
float
+0.3e+3
+3.14strstrfloat
3.14
float
3.14
strfloat
'3.14'
float
+3.14
.0strstrfloat
0.0
float
0.0
float
0
strfloat
.0
.14strstrfloat
0.14
float
0.14
float
0.14
strfloat
.14
.3e+3strstrfloat
300.0
float
300.0
int
300
strfloat
.3e+3
.3E-1strstrfloat
0.03
float
0.03
float
0.03
strfloat
.3E-1
001.23strstrfloat
1.23
float
1.23
strfloat
'1.23'
float
001.23
190:20:30.15strstrstrfloat
685230.15
strfloat
'685230.15'
str
85.230_15e+03strstrstrfloat
85230.15
strstrstr
85_230.15strstrstrfloat
85230.15
strstrstr
+.INFstrstrinf
.inf
inf
.inf
strinf
'Inf'
str
+.Infstrstrinf
.inf
inf
.inf
strinf
'Inf'
str
+.infstrstrinf
.inf
inf
.inf
strinf
'Inf'
str
-.INFstrstrinf
-.inf
inf
-.inf
strinf
'-Inf'
str
-.Infstrstrinf
-.inf
inf
-.inf
strinf
'-Inf'
str
-.infstrstrinf
-.inf
inf
-.inf
strinf
'-Inf'
str
.INFstrstrinf
.inf
inf
.inf
strinf
'Inf'
str
.Infstrstrinf
.inf
inf
.inf
strinf
'Inf'
str
.infstrstrinf
.inf
inf
.inf
strinf
'Inf'
str
.NANstrstrnan
.nan
nan
.nan
strnan
'NaN'
str
.NaNstrstrnan
.nan
nan
.nan
strnan
'NaN'
str
.nanstrstrnan
.nan
nan
.nan
strnan
'NaN'
str
-0strint
0
int
0
int
0
int
0
int
0
int
-0
-23strint
-23
int
-23
int
-23
int
-23
int
-23
int
-23
0strint
0
int
0
int
0
int
0
int
0
int
0
23strint
23
int
23
int
23
int
23
int
23
int
23
+0strstrint
0
int
0
strint
0
int
+0
+23strstrint
23
int
23
strint
23
int
+23
00strstrint
0
int
0
strint
0
int
00
0011strstrint
11
int
9
strint
9
int
0011
Input YAMLFailsafe JSON Core YAML 1.1 YAML.pm YAML::Syck YAML::XS
010strstrint
10
int
8
strint
8
int
010
07strstrint
7
int
7
strint
7
int
07
0x0strstrint
0
int
0
strint
0
str
0x10strstrint
16
int
16
strint
16
str
0x42strstrint
66
int
66
strint
66
str
0xastrstrint
10
int
10
strint
10
str
+0100_200strstrstrint
32896
strstrstr
+0b100strstrstrint
4
strstrstr
+190:20:30strstrstrint
685230
strint
685230
str
-0100_200strstrstrint
-32896
strstrstr
-0b101strstrstrint
-5
strstrstr
-0x30strstrstrint
-48
strint
0
str
-190:20:30strstrstrint
-685230
strint
'18446744073708868846'
str
02_0strstrstrint
16
strstrstr
0b0strstrstrint
0
strstrstr
0b100_101strstrstrint
37
strstrstr
0x2_0strstrstrint
32
strstrstr
100_000strstrstrint
100000
strstrstr
190:20:30strstrstrint
685230
strint
685230
str
0.3e3strfloat
300.0
float
300.0
strint
300
strfloat
0.3e3
+0.3e3strstrfloat
300.0
strstrstrfloat
+0.3e3
.3e3strstrfloat
300.0
strint
300
strfloat
.3e3
0o0strstrint
0
strstrstrstr
0o10strstrint
8
strstrstrstr
0o7strstrint
7
strstrstrstr
!!null nulltodo
null
null
null
null
null
null
strnull
~
null
~
!!nulltodo
todo
null
null
null
null
null
~
null
~
null
~
!!null #emptytodo
todo
null
null
null
null
strnull
~
null
~
!!null NULLtodo
todo
null
null
null
null
strnull
~
error
!!null Nulltodo
todo
null
null
null
null
strnull
~
error
Input YAMLFailsafe JSON Core YAML 1.1 YAML.pm YAML::Syck YAML::XS
!!null ~todo
todo
null
null
null
null
strnull
~
null
~
!!bool falsetodo
bool
false
bool
false
bool
false
strstrerror
!!bool truetodo
bool
true
bool
true
bool
true
strstrerror
!!bool FALSEtodo
todo
bool
false
bool
false
strstrerror
!!bool Falsetodo
todo
bool
false
bool
false
strstrerror
!!bool TRUEtodo
todo
bool
true
bool
true
strstrerror
!!bool Truetodo
todo
bool
true
bool
true
strstrerror
!!bool Ntodo
todo
todo
bool
false
strstrerror
!!bool ntodo
todo
todo
bool
false
strstrerror
!!bool NOtodo
todo
todo
bool
false
strstrerror
!!bool notodo
todo
todo
bool
false
strstrerror
!!bool OFFtodo
todo
todo
bool
false
strstrerror
!!bool Offtodo
todo
todo
bool
false
strstrerror
!!bool offtodo
todo
todo
bool
false
strstrerror
!!bool ONtodo
todo
todo
bool
true
strstrerror
!!bool Ontodo
todo
todo
bool
true
strstrerror
!!bool ontodo
todo
todo
bool
true
strstrerror
!!bool Ytodo
todo
todo
bool
true
strstrerror
!!bool ytodo
todo
todo
bool
true
strstrerror
!!bool YEStodo
todo
todo
bool
true
strstrerror
!!bool Yestodo
todo
todo
bool
true
strstrerror
!!bool yestodo
todo
todo
bool
true
strstrerror
!!float -3.14todo
float
-3.14
float
-3.14
float
-3.14
float
-3.14
float
'-3.14'
float
-3.14
!!float 0.0todo
float
0.0
float
0.0
float
0.0
float
0
float
'0'
float
0.0
!!float 3.14todo
float
3.14
float
3.14
float
3.14
float
3.14
float
'3.14'
float
3.14
!!float +0.3e+3todo
todo
float
300.0
float
300.0
strfloat
'300'
float
+0.3e+3
!!float .0todo
todo
float
0.0
float
0.0
float
0
float
'0'
float
.0
!!float .3e+3todo
todo
float
300.0
float
300.0
int
300
float
'300'
float
.3e+3
!!float .3E-1todo
todo
float
0.03
float
0.03
float
0.03
float
'0.03'
float
.3E-1
!!float 001.23todo
todo
float
1.23
float
1.23
strfloat
'1.23'
float
001.23
Input YAMLFailsafe JSON Core YAML 1.1 YAML.pm YAML::Syck YAML::XS
!!float 3.3e+3todo
todo
float
3300.0
float
3300.0
int
3300
float
'3300'
float
3.3e+3
!!float 190:20:30.15todo
todo
todo
float
685230.15
strfloat
'190'
error
!!float 85.230_15e+03todo
todo
todo
float
85230.15
strfloat
'85.23'
error
!!float 85_230.15todo
todo
todo
float
85230.15
strfloat
'85'
error
!!float +.INFtodo
todo
inf
.inf
inf
.inf
strfloat
'0'
error
!!float +.Inftodo
todo
inf
.inf
inf
.inf
strfloat
'0'
error
!!float +.inftodo
todo
inf
.inf
inf
.inf
strfloat
'0'
error
!!float -.INFtodo
todo
inf
-.inf
inf
-.inf
strfloat
'0'
error
!!float -.Inftodo
todo
inf
-.inf
inf
-.inf
strfloat
'0'
error
!!float -.inftodo
todo
inf
-.inf
inf
-.inf
strfloat
'0'
error
!!float .INFtodo
todo
inf
.inf
inf
.inf
strfloat
'0'
error
!!float .Inftodo
todo
inf
.inf
inf
.inf
strfloat
'0'
error
!!float .inftodo
todo
inf
.inf
inf
.inf
strfloat
'0'
error
!!float .NANtodo
todo
nan
.nan
nan
.nan
strfloat
'0'
error
!!float .NaNtodo
todo
nan
.nan
nan
.nan
strfloat
'0'
error
!!float .nantodo
todo
nan
.nan
nan
.nan
strfloat
'0'
error
!!int -0todo
int
0
int
0
int
0
int
0
int
0
int
-0
!!int -23todo
int
-23
int
-23
int
-23
int
-23
int
-23
int
-23
!!int 0todo
int
0
int
0
int
0
int
0
int
0
int
0
!!int 23todo
int
23
int
23
int
23
int
23
int
23
int
23
!!int +0todo
todo
int
0
int
0
strint
0
int
+0
!!int +23todo
todo
int
23
int
23
strint
23
int
+23
!!int 0011todo
todo
int
11
int
9
strint
11
int
0011
!!int 07todo
todo
int
7
int
7
strint
7
int
07
!!int 0x0todo
todo
int
0
int
0
strfloat
'0'
error
!!int 0x10todo
todo
int
16
int
16
strfloat
'0'
error
!!int 0x42todo
todo
int
66
int
66
strfloat
'0'
error
!!int 0xatodo
todo
int
10
int
10
strfloat
'0'
error
!!int +0100_200todo
todo
todo
int
32896
strfloat
'100'
error
!!int +0b100todo
todo
todo
int
4
strfloat
'0'
error
Input YAMLFailsafe JSON Core YAML 1.1 YAML.pm YAML::Syck YAML::XS
!!int +190:20:30todo
todo
todo
int
685230
strfloat
'190'
error
!!int -0100_200todo
todo
todo
int
-32896
strfloat
'-100'
error
!!int -0b101todo
todo
todo
int
-5
strfloat
'0'
error
!!int -0x30todo
todo
todo
int
-48
strfloat
'0'
error
!!int -190:20:30todo
todo
todo
int
-685230
strfloat
'-190'
error
!!int 00todo
todo
todo
int
0
strint
0
int
00
!!int 010todo
todo
todo
int
8
strint
10
int
010
!!int 02_0todo
todo
todo
int
16
strfloat
'2'
error
!!int 0b0todo
todo
todo
int
0
strfloat
'0'
error
!!int 0b100_101todo
todo
todo
int
37
strfloat
'0'
error
!!int 0x2_0todo
todo
todo
int
32
strfloat
'0'
error
!!int 100_000todo
todo
todo
int
100000
strfloat
'100'
error
!!int 190:20:30todo
todo
todo
int
685230
strfloat
'190'
error
!!float 0.3e3todo
float
300.0
float
300.0
todo
int
300
float
'300'
float
0.3e3
!!float +0.3e3todo
todo
float
300.0
todo
strfloat
'300'
float
+0.3e3
!!float .3e3todo
todo
float
300.0
todo
int
300
float
'300'
float
.3e3
!!int 0o0todo
todo
int
0
todo
strfloat
'0'
error
!!int 0o10todo
todo
int
8
todo
strfloat
'0'
error
!!int 0o7todo
todo
int
7
todo
strfloat
'0'
error