YAML DataTypes and Real-World Examples
Tags: devops, yaml
Published: 2022-01-25 18:50:48

This is the continuation of the YAML introduction head over [here](https://sumitmukharjii.hashnode.dev/introduction-to-yaml) for part 1.
So let's continue with the remaining portion of YAML.
**Key Datatype**

Key-Value pairs 
``` 
"apple" : "I am a red fruit"
1 : "This is a roll number"
``` 
**List Datatype**

```
- apple
- mango
- banannananna
``` 
**Block Style**
```
cities:
 - new delhi
 - mumbai
 - ahmedabad
``` 
YAML Parsers can be used to check if YAML is valid or not.
One such website is [YAMLLINT](http://www.yamllint.com/).
**Differentiating Between Documents**

```
cities:
 - new delhi
 - mumbai
 - ahmedabad
 ---
 cities: [new Delhi, mumbai]
 ---
 {mango: "fruit", age:5}
 ...
``` 
--- is used to differentiate the type of document.
... is used to define that document is finished now.

**JSON Files**
[Onlineyamltools](https://onlineyamltools.com/) is a website for conversion and stuff for YAML files.

YAML FILE 👇


```
cities:
 - new delhi
 - mumbai
 - ahmedabad
``` 
converted to JSON 👇

```
{
  "cities": [
    "new delhi",
    "mumbai",
    "ahmedabad"
  ]
}
``` 

**Flow Type**

```
 cities: [new Delhi, mumbai]

```
This doesn't give an indentation error

**Comments**
YAML doesn't support multiline comments, we have to use the # sign


```
# Mango
# Apple
# Grapes
``` 

**String Variables**

```
name: Sumit Mukharjee
fruit: "Apple"
job: 'swe'
message: !!str Hello There
``` 

**Write a single line in multiple lines**

```
message: >
this will
all be 
in one single line
``` 
same as *This will all be in one single line*

**YAML auto detects data type**

**Specifying the data types**

```
zero: !!int 0
positiveNum: !!int 45
negativeNum: !!int -45
binaryNum: !!int 0b11001
octalNum: !!int 06574
hexNum: !!int 0x45
commaValue: !!+540_000 # 540,000
exponentialNumbers: 6.023E56
``` 
**Float Value:**

```
marks: !!float 56.89
infinity: !!float .inf
noANumber: .nan
``` 

**Boolean Value**


```
booleanValues: !!bool No
``` 

**Null Value**

```
surname: !!null Null
~: this is a null key
```

**DateTime in YAML**

```
date: !!timestamp 2022-01-25
india time: 2001-12-15T02:59:43.10 +5:30
no time zone: 2001-12-15T02:59:43.10
``` 

**Advanced-Data Type**

When some of the sequences will be empty they are known as a sparse sequence.

```sparse seq:
 - hey
 - how
 - 
 - Null 
 - sup
``` 
**Nested Sequence**
sequence inside sequence

```
 - marks
 - name
 - roll_no
- 
 - simplemarks
 - avgMarks
```

**Maps DataType**
key:value pairs are called map datatype
Nested Maps

```name: Sumit Mukharjee
 role:
   age: 78
   job: student
``` 

**Pairs Datatype**
Sometimes one key may require duplicate values 


```pair examples: !!pairs
 - job: student
 - job: teacher
``` 

**Real World Example**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iji1oh96ee76o3h9m359.jpg)
**Storing Above data in XML**


```
<?xml version="1.0" encoding="UTF-8">
<School name="DPS" principal="Someone">
  <Students>
     <Student>
          <rno>23</rno>
          <name>"Sumit"</name>
          <marks>94</marks>
        </Student>
   </Students>
</School>
``` 
** In JSON**

```
{
    "School": [
        {
            "name": "DPS",
            "principal": "Someone",
            "Students": [
                {
                    "rno": 12,
                    "name": "Sumit Mukharjee",
                    "marks": 67
                }
            ]
        }
    ]
}
``` 
**In YAML**
```School:
  - name: DPS
    principal: Someone
    Students:
      - rno: 12
        name: Sumit Mukharjee
        marks: 67
```

This was it. Thanks for reading😊.