W przeciwieństwie do JSON i XML, YAML ma być bardziej czytelny przez ludzi. W przeciwieństwie do rywali JSON, który wykorzystuje wsporniki, i XML, który wykorzystuje tagi zdefiniowane przez użytkownika, YAML używa wcięcia i białej listy do generowania zagnieżdżonych bloków. Zwykle pliki YAML są używane do konfigurowania aplikacji, które potrzebują serwerów do hostingu aplikacji lub klastrów dla serwerów aplikacji, a nie serializacji lub deserializacji. Ludzie nie są szczególnie wielkimi fanami YAML, chociaż ma wiele aplikacji i jest wystarczająco prosty, aby ludzie mogli przeczytać.
Język YAML jest używany w wgłębieniu do reprezentowania struktury i gniazdowania. Kiedy złożone dane muszą być analizowane, wgłębienie stwarza problemy. Porównując YAML, awarie mogą wystąpić z powodu brakującej lub dodatkowej białej przestrzeni w złożonych strukturach. Zlokalizowanie tych nieoczekiwanych problemów w pliku YAML jest trudne. Ponieważ dokumenty YAML są teraz tak szeroko używane, napotykamy sytuacje, w których musimy obsługiwać dane w dokumentach YAML za pomocą kodu w praktycznie każdym innym projekcie. Dostarczono wiele bibliotek typu open source do manipulowania plikami YAML w Javie. Zarówno lubiane biblioteki, Jackson i Snakeyaml, mogą być użyte do osiągnięcia tego. Głównym tematem tego artykułu jest parsowanie plików YAML w Javie za pomocą Snakeyaml.
Jak zdobyć moduł YAML w języku Java w Ubuntu 20.04
Pliki YAML można przeanalizować w aplikacji Java za pomocą biblioteki Snakeyaml. Jest to prosta, lekka biblioteka zapewniająca interfejsy API serializacji i deserializacji dla plików YAML. Aby przechowywać kilka dokumentów jednocześnie, użyj funkcji Load () lub LoadAll () w partiach. Funkcja wykorzystuje InputStream, popularny standard interakcji z plikami i obiektami ciągami zawierającymi wystarczającą ilość danych YAML.
Jeśli używasz aplikacji Spring Boot, najnowsza wersja zależności Maven należy dodać przed użyciem Snakeyaml w projekcie w POM.plik XML, jak pokazano następująco:
Przykład 1: Przeczytaj plik YAML w języku Java
Przeczytajmy następujący dokument pliku YAML w Javie. Ten dokument YAML jest przechowywany wewnątrz pracownika.Plik YAML.
Teraz przeanalizujemy poprzedni dokument YAML (pracownik.YAML) za pomocą klasy YAML. Ten YAML znajduje się w folderze zasobów naszego projektu Java. Najpierw załadujmy plik do wejścia. Następnie zbudujemy obiekt YAML, który służy jako punkt wyjścia do korzystania z biblioteki. Możemy odczytać i analizować dowolne prawidłowe dane YAML z InputStream, Reader lub String podczas korzystania z instancji YAML za pomocą metod takich jak Load ().
Moduł implementuje mapę Java, w której klucze i wartości dla każdej właściwości są reprezentowane przez ich nazwy. Ponieważ nasze dane są przechowywane w plikach YAML jako wartości ciągów, liczb, a nawet kolekcji, należy pamiętać, że wartości mapy są typu. Mogą one zmieścić się w obiekcie, który obejmuje dowolną wartość, którą możemy dodać.
Poniższy wynik zostanie uzyskany, jeśli wyświetlimy nasz obiekt danych, w którym załadowano plik YAML:
Przykład 2: Przeczytaj zagnieżdżony dokument z pliku YAML w języku Java
Jak widać, obiekt mapy Java po prostu mapuje właściwości z pliku YAML jako pary wartości kluczowej w naszym poprzednim przykładowym kodzie. Zmodyfikujmy nasz plik YAML, aby zawierał również dane zbioru. Zaktualizowany plik YAML pojawia się w następujący sposób:
Zbiór „kursów” z wieloma wartościami danych jest teraz zawarty w naszym pliku YAML. Ani nasz kod Java, ani zmodyfikowany plik YAML nie wymagają aktualizacji. Plik YAML można załadować do naszego obiektu mapy za pomocą poprzedniego kodu bez żadnych problemów. Musimy tylko zaktualizować nazwę pliku YAML w metodzie FileInputStream.
Wynik odczytu pliku jest pokazany wewnątrz obrazu. Każda wartość na liście wartości dla kolumny „kursy” w pliku YAML jest obiektem mapy.
Przykład 3: Przeczytaj obiekt YAML jako niestandardowy obiekt Java
Teraz z powodzeniem użyliśmy pliku YAML w naszym kodzie Java jako prostych par kluczowych, zaimportujmy ponownie student.plik YAML jako niestandardowy obiekt Java, bardziej typowy. Aby zaimportować dane z naszych plików YAML, wykorzystamy następujące klasy Java: Pierwsza klasa to klasa osoby, w której atrybuty to identyfikator, nazwa i adres. Metoda Getter Setter jest również zdefiniowana dla każdego atrybutu. Twoje dane są chronione przez Getters i Setters, szczególnie podczas konstruowania zajęć.
Od osoby z klasy rozszerzyliśmy klasę uczniów i zdefiniowaliśmy jej atrybuty. Atrybuty są aktualizowane, a wartość zmiennej jest uzyskiwana za pomocą metody Getter i Setter.
Podobnie jak poprzednie dwie klasy, klasa kursu jest również konstruowana z jej atrybutami.
Dane zostaną załadowane do obiektu o nazwie Student, a element kursów plików YAML zostanie przekształcony w listę kursów terenowych. Plik YAML, którego użyliśmy w poprzednim przykładzie, zostanie ponownie wykorzystany i załadowany jako wejście.
Teraz podajemy typ danych, w którym chcemy rzucić dane, gdy tworzymy nasz obiekt klasy YAML. Snakeyaml zostaje poinstruowany, aby odczytać dane z pliku YAML i zmapować je do naszego obiektu studenckiego przez nowego konstruktora (uczeń.klasa).
Mapowanie jest proste, a nazwy atrybutów obiektowych muszą pokryć się z atrybutami „Nazwy YAML (kursy -> kursy). W rezultacie otrzymasz następujące dane wyjściowe:
Wniosek
W tym artykule przedstawiono przede wszystkim wdrożenie Java opartego na Snakeyaml Parsing i serializację YAML. Snakeyaml ułatwia manipulowanie plikami YAML w projektach Java i wymaga niewielkiego kodu do importowania plików YAML do projektów. Snakeyaml oferuje opcje formatowania, umożliwiając dostosowanie i zmianę, aby odpowiadały Twoim wymaganiom. Ta strona szczegółowo opisuje przykładowy kod, zapewniając wszystkim cenne zasoby uczenia się.