Om du är en utvecklare som skriver API:er har du förmodligen stött på YAML även om ditt primära serialiseringsverktyg kan vara JSON.
YAML har sin egen vänliga syntax, och det är ett praktiskt språk att lägga till i din utvecklingsarsenal.
Låt oss lära oss grunderna i YAML.
Data serialisering
När du vill skicka någon datastruktur eller ett objekt över datornätverk, t.ex. Internet, måste du göra om det till ett speciellt format för att läsa det och lagra det. Processen är allmänt känd som serialisering och är av enorm betydelse på webben. Ett vanligt användningsexempel på serialisering är när man läser data från databaser och överför dem över webben.
Vissa serialiseringsformationer inkluderar JSON, YAML, XML.
I den här artikeln pratar vi om YAML, och i slutet av artikeln kommer du att kunna arbeta dig igenom YAMLand med en tydlig introduktion till YAML.
Vad är YAML och hur gynnar det mig?
YAML är ett dataserialiseringsformat som står för YAML ain’t Markup language.
Den största fördelen med att använda YAML är läsbarhet och skrivbarhet. Om du har en konfigurationsfil som behöver vara lättare för människor att läsa, är det bättre att använda YAML. YAML är inte en fullständig ersättning av JSON eftersom JSON och XML också har sina platser; ändå är det användbart att lära sig YAML.
En annan fördel med YAML är dess stöd för olika datatyper som fall, arrayer, ordböcker, listor och skalärer. Den har bra stöd för de mest populära språken som JavaScript, Python, Ruby, Java, etc.
YAML stöder endast mellanslag, och det är skiftlägeskänsligt såväl som mellanslagskänsligt. Flikar accepteras inte universellt. En YAML-fil har filändelsen .yaml.
Grundläggande YAML-syntax
Varje YAML börjar med — vilket anger början på en YAML-fil.
När vi skapar ett API är vi intresserade av en funktion som tillhandahålls av YAML, känd som kartläggning.
Följande exempel visar exemplet på kartläggning i YAML.
--- name: James boy: yes GPA: 3.41
Mappningssyntaxen är nyckel: värde. (Observera utrymmet, det är väldigt viktigt i YAML, till skillnad från JSON eller XML.
YAML stöder också datatyper som tecken, strängar, heltal, flytande värden och samlingar som arrayer, listor som är konstruerade från grundläggande datatyper.
Datatyper i YAML
Låt oss se exemplet på en YAML nedan:
--- MALE: FALSE GPA: 3.61 ISSUES: NULL NAME: “BIGYAN” AGE: 16
Den första datatypen är en boolean, där den kan ha två värden: sant eller falskt. Värdet på GPA är flyttal. YAML stöder också nolldatatypen som vi har för ”Problem”. Värdet på ”Namn” är en sträng som måste citeras inom dubbla eller enkla citattecken. YAML stöder också flerradssträng och flerradssträng som en enda för läsbarhet.
Flerradiga och enradiga strängar
--- About: > Hello this is Ryan From Alabama and I like to Play soccer.
>-symbolen låter dig skriva en enstaka radsträng till flera rader. Meningen är faktiskt en beskrivning av en rad även om vi har flera rader.
Vi kan också ha flera radsträngar om vi använder | symbol som tillåts:
About: | This is a multiline string And will be printed line wise.
Lista
Listor är mycket viktiga i YAML.
Ett exempel på listan ges nedan.
--- - apple - banana - mango
Mappning från skalär till listor visas nedan, vilket är mycket viktigt för de flesta konfigurationsfiler.
--- Fruits: Apples Banana Guava
Kapsling krävs för att mappa skalär till lista. Vi kan också ha flera kapslade listor, som visas i exemplet nedan.
Automobiles: Car: Hyundai Volkswagen Ford
Här är bilar kapslade inuti bilar, och Hyundai är kapslade inuti bilar. Detta är ett exempel på flera häckande. Vi kan ha flera häckningar så mycket vi vill.
Subjects: Engineering: Mechanical engineering: Design and manufacture Automobile Control and Design Civil engineering: Structural engineering Hydropower Arts: Medieval Modern Painting
YAML tillhandahåller också & och *-symboler som ankare och referenser till ankaret för att undvika dubbelarbete. De är viktiga i konfigurationsfiler i ramverk som Ruby on Rails för att göra YAML-filen mindre.
Se exemplet nedan
<span class="hljs-attr">details:</span> <span class="hljs-meta">&details</span> <span class="hljs-attr">name:</span> <span class="hljs-string">"John" </span> age: 18
profession: engineer << : * details
vilket motsvarar:
profession: engineer name: "John" age: 18
YAML i Python
Python stöder YAML, inklusive vissa moduler som ruamel och pyyaml. Börja med att installera pyyaml
pip installera pyyaml
Skapa en fil med namnet details.yaml för handledningen
name: "john" age:18 gender: male
Skapa en annan fil med namnet feed.yaml med följande innehåll:
sports: football basketball cricket baseball --- countries: Brazil Lithuania Australia USA
Låt oss börja med att läsa filen details.yaml
import yaml with open('details.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
Efter att ha kört filen details.py får vi följande utdata
$ python details.py {'name': "john", 'age': 18, 'gender': male}
import yaml with open(r'feed.yaml') as file: # The FullLoader parameter handles the conversion from YAML # scalar values to Python the dictionary format fruits_list = yaml.load(file, Loader=yaml.FullLoader) print(fruits_list)
Skriver YAML till filer i Python
import yaml dict_file = [{'sports' : ['hockey', 'rugby', 'tennis', 'ping pong', 'football', 'badminton']}, {'countries' : ['Jamaica', 'England', 'Nepal', 'Netherlands', 'South Africa', 'Bolivia', 'Portugal']}] with open(r'E:data.yaml', 'w') as file: #create a new yaml file data = yaml.dump(dict_file, file)
YAML-implementering i Node.js
Node.js är ett bearbetningsspråk på serversidan och dataserialisering är av enorm betydelse i utvecklingsprocessen.
För vår handledning, låt oss överväga följande fil example.yaml:
name:John age:18 Hobbies: Hobby1:Football Hobby2:BasketBall Hobby3:Hockey Job: -System administrator -Programmer
Vi har ett npm-bibliotek tillgängligt för Node.js js-yaml. Låt oss börja med att installera modulen med
npm install js-yaml
Vi använder sedan js-yaml-modulen i vår fil.
const yaml = require('js-yaml'); //initialize js-yaml const fs = require('fs'); //initialize filestream try { const result = yaml.load(fs.readFileSync('example.yml', 'utf8')); console.log(result); } catch (e) { console.log(e); //catch exception }
Slutsats
I moderna programmeringsramverk och applikationer där data lagras eller distribueras, blir YAML allt vanligare i konfigurationsfiler. YAML riktar sig till många av samma kommunikationsapplikationer som Extensible Markup Language (XML) men har en minimal syntax som medvetet skiljer sig från XML.
YAML-filer kan skapas för fasta datastrukturer med hjälp av utskriftskommandon som skriver både data och YAML:s speciella dekoration. En dedikerad YAML-sändare är dock att föredra för att dumpa olika, eller komplexa, hierarkiska data. På liknande sätt, med reguljära uttryck, analyseras grundläggande YAML-filer (t.ex. nyckel-värdepar) lätt.