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 च्या दृश्यमान कार्यक्षेत्रात बसवायचा असेल, तर तुम्ही > (त्यापेक्षा मोठे) चिन्ह वापरू शकता.

    सिंगललाइन टेक्स्ट: >
     सुरू करा
     ...
     समान ओळ सुरू ठेवा
     ...
     शेवट

    सर्व मजकूर एका ओळीत मानला जाईल.

तुम्हाला एका फाईलमध्ये अनेक YAML डेटा स्ट्रक्चर्स लिहायची असल्यास, तुम्हाला --- (तीन हायफन) सह वेगळे करणे आवश्यक आहे. सराव मध्ये, याची क्वचितच गरज असते, परंतु या शक्यतेची जाणीव असणे चांगले.

YAML दस्तऐवजाचे उदाहरण

चला काही Java डेटा स्ट्रक्चर (क्लास) आणि संबंधित ऑब्जेक्ट बनवू आणि ऑब्जेक्टला 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    स्त्री: खरे ---