Les Json -fil i Scala

Les Json -fil i Scala
“JavaScript Object Notation, eller JSON, er et kodingsspråk. Den største erstatningen for XML er et helt eget datautvekslingsformat. Prosessen med å analysere en JSON -fil og innhenting av essensielle data fra den dekkes i denne guiden. JSON er et enkelt datautvekslingsformat som er enkelt for roboter å analysere og generere data fra, så vel som for mennesker å lese og skrive. Det er et spesifikt tekstformat som ikke er språkspesifikt. Det er flere biblioteker tilgjengelig som kan analysere JSON, noe som gjør det utfordrende å velge den beste for våre Scala -tjenester. Circe, Circe Optics og Lift-Json, som vi fant å være det største valget på grunn av hvor godt det håndterer JSON.”

Eksempel 1: Parsing Json med Circe i Scala i Ubuntu 20.04

Circe Scala -pakken gjør det enklere å jobbe med JSON ved å gjøre det enkelt å avkode JSON -strengene til Scala -objekter eller konvertere Scala -objekter til JSON. Vi trenger færre kodelinjer for å samhandle med JSON i Scala og takket være bibliotekets automatiske generering av objektkodere og dekodere.

I dette tilfellet har vi importert CIRCE -pakken og DerivedEcoder, som gjør at vi kan analysere en JSON -streng avhengig av "Animal" -klassen. Saksklassen representerer objektet “readjson”, og objektet kalles hoveddefinisjonen. Vi har definert variabelen "JSON_VALUE", som initialiseres med JSON -formatdataene. Den implisitte dekoderfunksjonen, Derivedekoder, fra Circes saksklasse er det vi trenger å gi i dette eksemplet. Feilen vil oppstå hvis vi ikke tilbyr implisitt. Under panseret, implementeringen av analyseren.Avkode kalt “Animal” -klassen og tildelte parameter “JSON_VALUE” til den. Deretter har vi en matchet identifikator som vil returnere ett av to tilfeller.

Vi har dekodet JSON -dataene i Scala ved å bruke Circe Scala -pakken som følger:

Eksempel nr. 2: Parsing JSON -matrise i Scala i Ubuntu 20.04

En matrise kan brukes til å starte JSON. Så la oss bruke Circe for å prøve å analysere det.

Det ligner den tidligere koden i utseendet. Først har vi importert to Circe -pakker. Deretter har vi definert saksklassen "frukt", og den inneholder en parameter, "f_name". Vi har etablert "readray" for definisjonen av hovedmetoden. Deretter erklærer vi variabelen “inputjson” for å representere JSON -dataene. Imidlertid har du kanskje lagt merke til noen få ting. Bare caseklassefruktdekoderen må opprettes. Liste [frukt] krever ikke at det opprettes en dekoder. Dette er slik at Circe praktisk kan avkode listen [a].

En generisk type er indikert av inlisten [a] av noe slag. Circe koder og avkoder hver type separat. "Resultat" -variabelen samsvarer.

Eksempel nr. 3: Parsing JSON -streng i Scala i Ubuntu 20.04

Circe-core-pakken inneholder markørobjektet, tilgjengelig i tre forskjellige former: markør, hcursor og akursor. Med dette kan data trekkes ut fra eller endres i JSON -strukturen. Vi vil avkode i følgende eksempel ved å bruke en algebraisk datatype. Du kan sammenligne det med oppregning hvis du ikke er kjent med det.


Med import av Scala Circe -pakker, har vi begynt kodeimplementering. Vi har definert tre saksklasser, "Fotball", "Hockey" og "Tennis", som utvides med objektet "nivå". Vi har også generert saksklasse "feil" for unntakshåndtering. Deretter har vi representert objektet "nivå". Vi har brukt "enten" nøkkelordet, som tar nivået og feilen inni det. "Enten" har to barn, høyre og venstre, som kalles med saksuttalelsen. Høyre sak vil bli utført på suksess, og venstre sak vil utføre ved feil.

Vi har etablert et annet objekt som en "dekoder" for implementeringen av primærkode. Her har vi laget en variabel “JSON” og tildelt JSON -dataene, som inneholder tre strenger. Den implisitte variabelen er definert som "RatingDecoder" som kalles "dekoder" -objektet og passerer enten [feil, nivå] til det. Vi har påkalt markørobjektet “Hcursor” som vil endre JSON -strukturen. Under implementeringen av parsefunksjonen har vi analysert JSON -dataene. JSON vil bli analysert og generert til Scala når de er matchet med de spesifiserte saksuttalelsene.

Du kan se at dekoder [enten [feil, nivå]] ser ut til å tilfredsstille alle kravene. Koden over, når den utføres, gir de forventede resultatene.

Eksempel 4: Parsing JSON med Lift-Json Library i Scala i Ubuntu 20.04

Bruk en kombinasjon av Lift-Json-bibliotekets teknikker. Eksemplet som følger demonstrerer hvordan du deserialiserer strengen JSonstring i mange objekter mens du viser hvert objekt når det er deserialisert som følger:


Etter det definerte vi en klasse “AnsattesAccount”. Saksklassen inneholder noen attributter med de spesifiserte datatypene. Deretter opprettet vi "ParsejsonArray" og definerte en streng som heter JSonstring som inneholder noen eksempler på JSON -data. Etter det erklærte vi variabelen “JSON” der vi påkalte parsefunksjonen. Parse -funksjonen konverterer denne strengen til et JValue -objekt med navnet JSON.

\\ -metoden brukes deretter til å søke i JSON -dataene etter hvert element med navnet "E -post". Denne syntaksen er bra siden den samsvarer med XPath-lignende teknikker som brukes i Scala XML-biblioteket. For Loop søker gjentatte ganger etter elementer, trekker ut hvert element som et "e -post" -objekt, og skriver deretter ut innholdet i objektets data. Vi har gitt noen av feltene til Println -setningen som bare blir analysert inn i Scala.

Følgende skalautgang oppnås etter å ha kjørt programmet for å analysere JSON -data.

Konklusjon

To tilnærminger ble presentert i denne artikkelen: den ene brukte Circe Scala Methods, og den andre brukte en kjent Lift-Json for å analysere JSON-teksten. Circe Scala-verktøyet letter samspillet med JSON gjennom bruk av et brukervennlig API. Vi kan alltid lage en tilpasset koder eller dekoder, eller vi kan bruke feltekstraksjonskoden direkte for å endre atferden til systemet. Og vi innså at begge funksjoner på grunn av deres funksjoner og enkel utvikling alltid er foretrukket når du analyserer.