Przeczytaj plik JSON w Scala

Przeczytaj plik JSON w Scala
„Notacja obiektu JavaScript lub JSON to język kodowania. Największym zamiennikiem XML jest całkowicie osobny format wymiany danych. Proces analizowania pliku JSON i uzyskiwania podstawowych danych z niego jest omówiony w tym przewodniku. JSON to prosty format wymiany danych, który jest prosty dla robotów do analizowania i generowania danych, a także dla ludzi do czytania i pisania. Jest to konkretny format tekstowy, który nie jest specyficzny dla języka. Dostępnych jest kilka bibliotek, które mogą przeanalizować JSON, co utrudnia wybranie najlepszego dla naszych usług Scala. Circe, Circe Optics i Lift-Json, które uznaliśmy za największy wybór ze względu na to, jak dobrze radzi sobie z JSON."

Przykład nr 1: Parsowanie JSON z Circe w Scali w Ubuntu 20.04

Pakiet Circe Scala ułatwia pracę z JSON, ułatwiając dekodowanie ciągów JSON w obiekty Scala lub konwersja obiektów Scala na JSON. Potrzebujemy mniej linii kodu do interakcji z JSON w Scali i dzięki automatycznej generowaniu enkoderów obiektów i dekoderów biblioteki.

W tym przypadku zaimportowaliśmy pakiet CIRCE i Koder pochodny, który umożliwia nam przeanalizowanie sznurka JSON w zależności od klasy „zwierząt”. Klasa sprawa reprezentuje obiekt „ReadJson”, a obiekt nazywa się główną definicją. Zdefiniowaliśmy zmienną „JSON_VALUE”, która jest inicjowana z danymi formatu JSON. Niejawna funkcja dekodera, pochodzenie, z klasy Case Case, jest tym, co musimy podać w tym przykładzie. Błąd wystąpił, jeśli nie zaoferujemy ukrytej. Pod maską wdrożenie parsera.dekoduj nazywane klasą „zwierzęcy” i przypisany parametr „JSON_VALUE”. Następnie mamy dopasowany identyfikator, który zwróci jeden z dwóch przypadków.

Dekodowaliśmy dane JSON do Scala za pomocą pakietu Circe Scala w następujący sposób:

Przykład nr 2: Parsowanie tablicy JSON w Scali w Ubuntu 20.04

Można użyć tablicy do rozpoczęcia JSON. Użyjmy więc Circe, aby to przeanalizować.

Przypomina wcześniejszy kod z wyglądu. Najpierw zaimportowaliśmy dwa pakiety Circe. Następnie zdefiniowaliśmy klasę sprawy „owoce” i zawiera jeden parametr „nazwa f_name”. Ustanowiliśmy „ReadArray” dla głównej definicji metody. Następnie deklarujemy zmienną „InputJson” do przedstawienia danych JSON. Być może zauważyłeś kilka rzeczy. Należy utworzyć tylko dekoder owoce klasy. Lista [owoce] nie wymaga utworzenia dekodera. Dzieje się tak, aby Circe mogła wygodnie dekodować listę [A].

Typ ogólny jest wskazywany przez inlistę [a] dowolnego rodzaju. Circe koduje i dekoduje każdy typ osobno. Zmienna „Wynik” odpowiada sprawie, która zwróci prawą sprawę po powodzenia ankietowania JSON na Scala lub lewą sprawę w sprawie awarii.

Przykład nr 3: Parsing JSON Ciąg w Scali w Ubuntu 20.04

Pakiet CIRCE-Core zawiera obiekt kursora, dostępny w trzech różnych formach: kursor, hCursor i Acursor. Dzięki temu dane mogą być wyodrębnione lub modyfikowane w strukturze JSON. Dekodujemy w poniższym przykładzie, używając typu danych algebraicznych. Możesz porównać to do wyliczenia, jeśli nie znasz tego.


Dzięki importowaniu pakietów Scala Circe, rozpoczęliśmy implementację kodu. Zdefiniowaliśmy trzy klasy, „piłka nożna”, „hokej” i „tenis”, które są rozszerzone o obiekt „poziom”. Ponadto wygenerowaliśmy „błąd” klasy case w celu obsługi wyjątków. Następnie reprezentowaliśmy obiekt „poziom”. Wykorzystaliśmy słowo kluczowe „albo”, które bierze w nim poziom i błąd. „Albo” ma dwoje dzieci, po prawej i lewej stronie, które są wywoływane z oświadczeniem sprawy. Prawa sprawa zostanie wykonana w odniesieniu do sukcesu, a lewa skrzynka zostanie wykonana po awarii.

Ustanowiliśmy inny obiekt jako „dekoder” dla podstawowej implementacji kodu. Tutaj utworzyliśmy zmienną „JSON” i przypisaliśmy dane JSON, które zawierają trzy ciągi. Zmienna niejawna jest definiowana jako „ocenaDeCoder”, która nazywa się obiektem „dekodera” i przekazuje do niego [błąd, poziom]. Wywołaliśmy obiekt kursora „HCursor”, który zmodyfikuje strukturę JSON. Zgodnie z wdrożeniem funkcji Parse, przeanalizowaliśmy dane JSON. JSON zostanie przeanalizowany i wygenerowany w Scala, gdy zostanie dopasowany do określonych instrukcji spraw.

Możesz zobaczyć, że dekoder [albo [błąd, poziom]] wydaje się spełniać wszystkie wymagania. Kod powyżej, po wykonaniu, daje oczekiwane wyniki.

Przykład nr 4: Parsowanie JSON z biblioteką Lift-Json w Scali w Ubuntu 20.04

Użyj kombinacji technik biblioteki Lift-Json. Poniższy przykład pokazuje, jak deserializować ciąg jsonstruujący w wiele obiektów, jednocześnie wyświetlając każdy obiekt, ponieważ jest on deserializowany w następujący sposób:


Następnie zdefiniowaliśmy klasę „Pracownicy”. Klasa przypadku zawiera niektóre atrybuty z określonymi typami danych. Następnie stworzyliśmy „parsejsonArray” i zdefiniowaliśmy ciąg o nazwie JSonstring, który zawiera przykładowe dane JSON. Następnie zadeklarowaliśmy zmienną „JSON”, w której wywołaliśmy funkcję Parse. Funkcja Parse przekształca ten ciąg w obiekt JValue z nazwą JSON.

Metoda \\ jest następnie używana do wyszukiwania danych JSON dla każdego elementu z nazwą „E -mail”. Ta składnia jest dobra, ponieważ pasuje do technik podobnych do XPath zastosowanych w bibliotece Scala XML. Pętla dla wielokrotnie wyszukuje elementy, wyodrębnia każdy element jako obiekt „e -mail”, a następnie drukuje zawartość danych tego obiektu. Przeszliśmy niektóre pola do instrukcji println, które zostaną przeanalizowane tylko w Scala.

Poniższe wyjście Scala jest uzyskiwane po uruchomieniu programu w celu przeanalizowania danych JSON.

Wniosek

W tym artykule przedstawiono dwa podejścia: Jeden zastosowano metody CIRCE Scala, a drugi zastosował dobrze znany JSON, aby przeanalizować tekst JSON. Narzędzie CIRCE Scala ułatwia interakcję z JSON poprzez użycie łatwego w użyciu interfejsu API. Zawsze możemy utworzyć niestandardowy enkoder lub dekoder lub możemy użyć kodu ekstrakcji pola, aby zmienić zachowanie systemu. I zdaliśmy sobie sprawę, że ze względu na ich cechy i łatwość rozwoju oba są zawsze preferowane podczas analizowania.