YAML దేనికి ఉపయోగించబడుతుంది?

మరొక టెక్స్ట్ డేటా ఫార్మాట్ YAML ( ఇంకా మరొక మార్కప్ లాంగ్వేజ్ ; తరువాత, YAML మార్కప్ లాంగ్వేజ్ కాదు ). నెట్‌వర్క్ ద్వారా ప్రసారం కోసం వస్తువులను సీరియలైజ్ చేయడానికి ఇది ఉపయోగించబడుతుంది (XML మరియు JSON ఈ విధంగా ఉపయోగించబడినట్లే). ఇది మానవులు చదవగలిగేది కనుక, ఇది కాన్ఫిగరేషన్ ఫైల్‌లను వ్రాయడానికి కూడా ఉపయోగించబడుతుంది, ఉదాహరణకు, డాకర్, కుబెర్నెట్స్, అన్సిబుల్ మొదలైన వాటి కోసం. YAMLని ఫైల్‌లో సేవ్ చేయవలసి వచ్చినప్పుడు (ఉదాహరణకు, కాన్ఫిగరేషన్ ఫైల్), మేము రెండింటిలో ఒకదాన్ని ఉపయోగిస్తాము. పొడిగింపులు: .yaml లేదా .yml.

భాషా వాక్యనిర్మాణం

XMLలో, ట్యాగ్‌లను సూచించడానికి యాంగిల్ బ్రాకెట్‌లు ( <> ) ఉపయోగించబడతాయి. JSONలో, మేము కర్లీ బ్రాకెట్లను ఉపయోగిస్తాము ( {} ). YAML కొత్త పంక్తులు మరియు ఇండెంటేషన్‌ని ఉపయోగిస్తుంది.

డేటా కీ-విలువ జంటలుగా నిల్వ చేయబడుతుంది, ఇక్కడ కీ అనేది స్ట్రింగ్, మరియు విలువ వివిధ డేటా రకాలు (స్ట్రింగ్, నంబర్, ట్రూ/ఫాల్స్, అర్రే, మొదలైనవి) కావచ్చు. కీలు కొటేషన్ మార్కులు లేకుండా వ్రాయబడ్డాయి.

YAMLలో సమాచారం ఎలా నిల్వ చేయబడుతుందో చూద్దాం:

టైప్ చేయండి జావా YAML
పూర్ణ సంఖ్య
int number = 5
సంఖ్య: 5
పాక్షిక సంఖ్య
double number = 4.3
సంఖ్య: 4.3
బూలియన్ వేరియబుల్
boolean valid = false
చెల్లుబాటు: తప్పుడు
చెల్లుబాటు:
చెల్లుబాటు కాదు: ఆఫ్

* చెల్లుబాటు అయ్యే బూలియన్ విలువలు: నిజం/తప్పు, అవును/కాదు, ఆన్/ఆఫ్.

స్ట్రింగ్
String city = "New York"
నగరం: న్యూయార్క్
నగరం: 'న్యూయార్క్'
నగరం: "న్యూయార్క్"

* మూడు ఎంపికలు సమానమైనవి.

ప్రత్యేక అక్షరాలతో స్ట్రింగ్
String line = "aaa\nbbb"
లైన్: "aaa\nbbb"
కోడ్‌లో వ్యాఖ్యానించండి
// comment
# వ్యాఖ్య
వస్తువు
public class Person {
  String name = "Dennis";
  int age = 32;
}

* వస్తువు యొక్క తరగతి ఇవ్వబడింది కాబట్టి మీరు వస్తువు యొక్క నిర్మాణాన్ని చూడవచ్చు.

వ్యక్తి:
  పేరు: "డెన్నిస్"
  వయస్సు: 32

* గుణాలకు ముందు ఇండెంటేషన్‌పై శ్రద్ధ వహించండి. ఇది అన్ని లక్షణాలకు ఒకేలా ఉండాలి.

సాధారణ విలువల జాబితా
var ages =
    List.of(1, 3, 5, 9, 78, -5);
వయస్సు: [1, 3,5,9,78, -5]
వయస్సు:
  - 1
  - 3
  - 5
  - 9
  - 78
  - -5

* రెండు ఎంపికలు సమానం.
** జాబితాలోని ప్రతి మూలకం హైఫన్‌తో గుర్తించబడింది.

వస్తువుల జాబితా
class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}List<Person> people = List.of(
        new Person("Ian", 21),
        new Person("Marina", 25),
        new Person("Owen", 73)      );
వ్యక్తులు:
  - పేరు: "ఇయాన్"
    వయస్సు: 21
  - పేరు: "మెరీనా"
    వయస్సు: 25
  - పేరు: "ఓవెన్"
    వయస్సు: 73

జావాలో వలె, జాబితా యొక్క మూలకం జాబితా కావచ్చు, అనగా వస్తువులు ఒకదానిలో ఒకటి గూడులో ఉంటాయి. జాబితా యొక్క తదుపరి మూలకాన్ని సూచించే హైఫన్ పేరెంట్ కీకి సంబంధించి క్షితిజ సమాంతరంగా ఆఫ్‌సెట్ చేయబడుతుంది లేదా దాని దిగువన నేరుగా ఉంటుంది. ప్రధాన విషయం ఏమిటంటే అన్ని మూలకాలు ఒకే ఆకృతిని కలిగి ఉంటాయి. ఇది గందరగోళాన్ని మరియు అస్పష్టమైన గూడు క్రమాన్ని నివారించడానికి సహాయం చేస్తుంది.

వయస్సు:
  - 1
  - 3
  - 5
  - 9
  - 78
  - -5
వయస్సు:
- 1
- 3
- 5
- 9
- 78
- -5

టెక్స్ట్ విలువలతో పనిచేసేటప్పుడు మరో రెండు సూక్ష్మ నైపుణ్యాలు ఉన్నాయి:

  1. బహుళ వచనం. మనం వచనాన్ని ఇలా సేవ్ చేయవచ్చు:

    బహుళ లైన్ టెక్స్ట్: "లైన్ 1\nలైన్ 2\n....లైన్ n"

    కానీ అది చదవడానికి ప్రయత్నించడం చాలా అసహ్యకరమైనది. కాబట్టి ఉంది | (పైపు) గుర్తు, మీరు వచనాన్ని విభిన్నంగా వ్రాయడానికి ఉపయోగించవచ్చు:

    బహుళ వచనం: |
     లైన్ 1
     లైన్ 2
     ....
     లైన్ n

    రెండవ ఎంపిక మరింత సౌకర్యవంతంగా ఉంటుందని మీరు అంగీకరిస్తారు, సరియైనదా?

  2. పొడవైన పంక్తులు. మీరు టెక్స్ట్‌ను ఒక లైన్‌లో ఉంచాలనుకుంటే, అది IDE కనిపించే వర్క్‌స్పేస్‌లో సరిపోవాలని కోరుకుంటే, మీరు > (కంటే ఎక్కువ) చిహ్నాన్ని ఉపయోగించవచ్చు.

    singlelineText: >
     ప్రారంభం
     ...
     అదే పంక్తిని కొనసాగించండి
     ...
     ముగింపు

    మొత్తం వచనం ఒక లైన్‌గా పరిగణించబడుతుంది.

మీరు ఒక ఫైల్‌లో అనేక YAML డేటా స్ట్రక్చర్‌లను వ్రాయవలసి వస్తే, మీరు వాటిని --- (మూడు హైఫన్‌లు) తో వేరు చేయాలి . ఆచరణలో, దీని అవసరం చాలా అరుదుగా ఉంటుంది, కానీ ఈ అవకాశం గురించి తెలుసుకోవడం ఉత్తమం.

YAML డాక్యుమెంట్ యొక్క ఉదాహరణ

కొంత జావా డేటా స్ట్రక్చర్ (ఒక క్లాస్) మరియు సంబంధిత ఆబ్జెక్ట్‌ని క్రియేట్ చేద్దాం మరియు ఆబ్జెక్ట్‌ని YAMLగా సూచించడానికి ప్రయత్నించండి.

class Family {
   private Date weddingDate;
   private Person wife;
   private Person husband;
   private List<Person> children;

   // Getters and setters are omitted
}

class Person {
   private final String name;
   private final boolean isWoman;
   private int age;

   public Person(String name, int age, boolean isWoman) {
       this.name = name;
       this.age = age;
       this.isWoman = isWoman;
   }

// Getters and setters are omitted

}

public static void main(String[] args) {
   Person wife = new Person("Ann", 37, true);
   Person husband = new Person("Alex", 40, false);
   var children = List.of(
           new Person("Iris", 12, true),
           new Person("Olivia", 5, true)
   );
   Date weddingDate = new Date(/* some long */);

   Family family = new Family();
   family.setWeddingDate(weddingDate);
   family.setWife(wife);
   family.setHusband(husband);
   family.setChildren(children);
}

YAMLలో చెల్లుబాటు అయ్యే ప్రాతినిధ్యం:

---
వివాహ తేదీ: 2000-12-03
భార్య:
 పేరు: అన్న
 వయస్సు: 37
 స్త్రీ: అవును
భర్త:
 పేరు: అలెక్స్
 వయస్సు: 40 స్త్రీ: పిల్లలు
 లేరు :  - పేరు: ఐరిస్    వయస్సు: 12    స్త్రీ: నిజం  - పేరు: ఒలివియా    వయస్సు: 5    స్త్రీ: నిజం ---