वाईएएमएल किसके लिए प्रयोग किया जाता है?

एक अन्य टेक्स्ट डेटा प्रारूप YAML है ( फिर भी एक और मार्कअप लैंग्वेज ; बाद में, YAML मार्कअप लैंग्वेज नहीं है )। इसका उपयोग नेटवर्क पर प्रसारण के लिए वस्तुओं को क्रमबद्ध करने के लिए किया जाता है (ठीक उसी तरह जैसे XML और JSON का उपयोग इस तरह किया जाता है)। क्योंकि यह मानव पठनीय है, इसका उपयोग कॉन्फ़िगरेशन फ़ाइलों को लिखने के लिए भी किया जाता है, उदाहरण के लिए, डॉकर, कुबेरनेट्स, अन्सिबल, आदि के लिए। जब ​​YAML को एक फ़ाइल में सहेजना आवश्यक होता है (उदाहरण के लिए, कॉन्फ़िगरेशन फ़ाइल), हम दो में से एक का उपयोग करते हैं एक्सटेंशन: .yaml या .yml।

भाषा वाक्य रचना

XML में, कोण कोष्ठक ( <> ) का उपयोग टैग्स को नामित करने के लिए किया जाता है। JSON में, हम कर्ली ब्रैकेट्स ( {} ) का उपयोग करते हैं। वाईएएमएल नई लाइनों और इंडेंटेशन का उपयोग करता है।

डेटा को कुंजी-मूल्य जोड़े के रूप में संग्रहीत किया जाता है, जहां कुंजी एक स्ट्रिंग है, और मान विभिन्न डेटा प्रकार (स्ट्रिंग, संख्या, सत्य/गलत, सरणी, आदि) हो सकता है। कुंजियाँ बिना उद्धरण चिह्नों के लिखी जाती हैं।

आइए देखें कि वाईएएमएल में जानकारी कैसे संग्रहीत की जाती है:

प्रकार जावा वाईएएमएल
पूर्णांक
int number = 5
नंबर 5
आंशिक संख्या
double number = 4.3
संख्या: 4.3
बूलियन चर
boolean valid = false
वैध: झूठा
वैध:
वैध नहीं: बंद

* मान्य बूलियन मान: सही/गलत, हाँ/नहीं, चालू/बंद।

डोरी
String city = "New York"
शहर: न्यूयॉर्क
शहर: 'न्यूयॉर्क'
शहर: "न्यूयॉर्क"

* तीनों विकल्प समान हैं।

विशेष वर्णों के साथ स्ट्रिंग
String line = "aaa\nbbb"
रेखा: "आआ \ 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
     ....
     लाइन एन

    आप सहमत होंगे कि दूसरा विकल्प अधिक सुविधाजनक है, है ना?

  2. लंबी पंक्तियां। यदि आप पाठ को एक पंक्ति पर रखना चाहते हैं, लेकिन यह भी चाहते हैं कि यह IDE के दृश्यमान कार्यक्षेत्र में फिट हो, तो आप > (इससे बड़ा) प्रतीक का उपयोग कर सकते हैं।

    सिंगललाइनटेक्स्ट:>
     शुरू करें
     ...
     एक ही लाइन जारी रखें
     ...
     अंत

    सभी पाठ को एक पंक्ति माना जाएगा।

यदि आपको कई 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);
}

वाईएएमएल में वैध प्रतिनिधित्व:

---
शादी की तारीख: 2000-12-03
पत्नी:
 नाम: ऐन
 उम्र: 37
 महिला: हाँ
पति:
 नाम: एलेक्स
 उम्र: 40 महिला: कोई बच्चे
 नहीं :  - नाम: आइरिस    उम्र: 12    महिला: सच  - नाम: ओलिविया    उम्र: 5    महिला है: सच ---