YAML எதற்காகப் பயன்படுத்தப்படுகிறது?

மற்றொரு உரை தரவு வடிவம் YAML ( இன்னொரு மார்க்அப் மொழி ; பின்னர், YAML மார்க்அப் மொழி அல்ல ). பிணையத்தில் பரிமாற்றத்திற்கான பொருட்களை வரிசைப்படுத்த இது பயன்படுகிறது (எக்ஸ்எம்எல் மற்றும் ஜேஎஸ்ஓஎன் இந்த வழியில் பயன்படுத்தப்படுகிறது). இது மனிதர்களால் படிக்கக்கூடியதாக இருப்பதால், உள்ளமைவு கோப்புகளை எழுதவும் பயன்படுகிறது, எடுத்துக்காட்டாக, டோக்கர், குபெர்னெட்ஸ், அன்சிபிள் போன்றவற்றுக்கு. 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. நீண்ட கோடுகள். நீங்கள் உரையை ஒரு வரியில் வைத்திருக்க விரும்பினால், ஆனால் அது ஐடிஇயின் புலப்படும் பணியிடத்தில் பொருந்த வேண்டும் என விரும்பினால், நீங்கள் > (அதிகமானவை) குறியீட்டைப் பயன்படுத்தலாம்.

    சிங்கிள்லைன் டெக்ஸ்ட்: >
     ஆரம்பம்
     ...
     தொடரவும் அதே வரி
     ...
     முடிவு

    அனைத்து உரைகளும் ஒரு வரியாகக் கருதப்படும்.

நீங்கள் ஒரு கோப்பில் பல 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    பெண்: உண்மை ---