Programmering

Hvad er JSON? Et bedre format til dataudveksling

JavaScript Object Notation er en skemafri tekstbaseret repræsentation af strukturerede data, der er baseret på nøgleværdipar og ordnede lister. Selvom JSON stammer fra JavaScript, understøttes det enten indbygget eller gennem biblioteker på de fleste større programmeringssprog. JSON bruges ofte, men ikke udelukkende, til at udveksle information mellem webklienter og webservere.

I løbet af de sidste 15 år er JSON blevet allestedsnærværende på nettet. I dag er det det valgte format for næsten alle offentligt tilgængelige webtjenester, og det bruges ofte også til private webtjenester.

Populariteten af ​​JSON har også resulteret i indbygget JSON-support fra mange databaser. Relationsdatabaser som PostgreSQL og MySQL leveres nu med indbygget support til lagring og forespørgsel om JSON-data. NoSQL-databaser som MongoDB og Neo4j understøtter også JSON, selvom MongoDB bruger en let modificeret, binær version af JSON bag kulisserne.

I denne artikel ser vi hurtigt på JSON og diskuterer, hvor den kom fra, dens fordele i forhold til XML, dens ulemper, hvornår du skal bruge den, og hvornår du skal overveje alternativer. Men lad os først dykke ned i den nitty gritty af hvordan JSON ser ud i praksis.

JSON-eksempel

Her er et eksempel på data kodet i JSON:

{

“Fornavn”: “Jonathan”,

“LastName”: “Freeman”,

“LoginCount”: 4,

“IsWriter”: sandt,

“WorksWith”: [“Spantree Technology Group”, “”],

“Kæledyr”: [

    {

“Navn”: “Lilly”,

“Type”: “Vaskebjørn”

    }

  ]

}

Ovenstående struktur definerer klart nogle attributter for en person. Det inkluderer et for- og efternavn, antallet af gange personen har logget ind, uanset om denne person er forfatter, en liste over virksomheder, personen arbejder med, og en liste over personens kæledyr (kun en, i dette tilfælde). En struktur som den ovenfor kan sendes fra en server til en webbrowser eller en mobilapplikation, som derefter udfører nogle handlinger, såsom at vise data eller gemme dem til senere reference.

JSON er et generisk dataformat med et minimalt antal værdityper: strenge, tal, booleanske, lister, objekter og null. Selvom notationen er en delmængde af JavaScript, er disse typer repræsenteret på alle almindelige programmeringssprog, hvilket gør JSON til en god kandidat til at overføre data på tværs af sproghuller.

JSON-filer

JSON-data gemmes i filer, der slutter med .json-udvidelsen. I overensstemmelse med JSONs menneskelæsbare etos er disse simpelthen almindelige tekstfiler og kan let åbnes og undersøges. Som SQLizer-bloggen forklarer, er dette også en nøgle til JSONs bredere interoperabilitet, da næsten ethvert sprog, du kan navngive, kan læse og behandle almindelige tekstfiler, og de er nemme at sende over internettet.

Hvorfor skal jeg bruge JSON?

For at forstå nytten og vigtigheden af ​​JSON bliver vi nødt til at forstå lidt om historien om interaktivitet på nettet.

I begyndelsen af ​​2000'erne begyndte interaktivitet på nettet at transformeres. På det tidspunkt fungerede browseren primært som en stum klient til at vise information, og serveren gjorde alt det hårde arbejde for at forberede indholdet til visning. Når en bruger klikkede på et link eller en knap i browseren, sendes en anmodning til serveren, serveren forbereder de nødvendige oplysninger som HTML, og browseren gengiver HTML som en ny side. Dette mønster var trægt og ineffektivt og krævede, at browseren gendannede alt på siden, selvom kun en del af siden havde ændret sig.

Fordi genindlæsning af helside var dyrt, så webudviklere til nyere teknologier for at forbedre den samlede brugeroplevelse. I mellemtiden viste evnen til at foretage webanmodninger i baggrunden, mens en side blev vist, som for nylig var blevet introduceret i Internet Explorer 5, at være en levedygtig tilgang til at indlæse data trinvis til visning. I stedet for at genindlæse hele indholdet af siden, vil et klik på opdateringsknappen udløse en webanmodning, der indlæses i baggrunden. Når indholdet blev indlæst, kunne dataene manipuleres, gemmes og vises på siden ved hjælp af JavaScript, det universelle programmeringssprog i browsere.

REST versus SOAP: JSON-forbindelsen

Oprindeligt blev disse data overført i XML-format (se nedenfor for et eksempel) ved hjælp af en beskedprotokol kaldet SOAP (Simple Object Access Protocol). Men XML var detaljeret og vanskelig at administrere i JavaScript. JavaScript havde allerede objekter, som er en måde at udtrykke data på på sproget, så Douglas Crockford tog en delmængde af dette udtryk som en specifikation for et nyt dataudvekslingsformat og kaldte det JSON. JSON var meget lettere for folk at læse og for browsere at analysere.

I løbet af 00'erne begyndte en anden webtjeneste-teknologi, kaldet Representational State Transfer, eller REST, at overhale SOAP med det formål at overføre data. En af de store fordele ved programmering ved hjælp af REST API'er er, at du kan bruge flere dataformater - ikke kun XML, men også JSON og HTML. Da webudviklere foretrak JSON frem for XML, kom de også til at favorisere REST frem for SOAP. Som Kostyantyn Kharchenko udtrykte det på Svitla-bloggen, "På mange måder skyldes RESTs succes JSON-format på grund af dets nemme brug på forskellige platforme."

I dag er JSON de facto-standarden til udveksling af data mellem web- og mobilklienter og back-end-tjenester.

JSON vs. XML

Som nævnt ovenfor er hovedalternativet til JSON XML. XML bliver dog mindre og mindre almindeligt i nye systemer, og det er let at se hvorfor. Nedenfor er en version af de data, du så ovenfor, denne gang i XML:

Jonathan

Freeman

  4

rigtigt

Spantree Technology Group

Lilly

Vaskebjørn

Ud over at være mere detaljeret (nøjagtigt dobbelt så detaljeret i dette tilfælde) introducerer XML også en vis tvetydighed, når man analyserer i en JavaScript-venlig datastruktur. Konvertering af XML til et JavaScript-objekt kan tage fra ti til hundreder af kodelinjer og kræver i sidste ende tilpasning baseret på det specifikke objekt, der parses. Konvertering af JSON til et JavaScript-objekt tager en linje kode og kræver ikke nogen forudgående viden om det objekt, der parses.

Begrænsninger af JSON

Selvom JSON er et relativt kortfattet, fleksibelt dataformat, der er let at arbejde med på mange programmeringssprog, er der nogle ulemper ved formatet. Her er de fem hovedbegrænsninger:

  1. Intet skema. På den ene side betyder det, at du har total fleksibilitet til at repræsentere dataene på den måde, du vil. På den anden side betyder det, at du ved et uheld kunne oprette misdannede data meget let.
  2. Kun én nummertype: IEEE-754 flydepunktsformat med dobbelt præcision. Det er en hel mundfuld, men det betyder simpelthen, at du ikke kan drage fordel af de forskellige og nuancerede nummertyper, der findes på mange programmeringssprog.
  3. Ingen dato type. Denne udeladelse betyder, at udviklere skal ty til at bruge strengrepræsentationer af datoer, hvilket fører til formatering af uoverensstemmelser, eller skal repræsentere datoer i form af millisekunder siden epoken (1. januar 1970).
  4. Ingen kommentarer. Dette gør det umuligt at kommentere felter inline, hvilket kræver yderligere dokumentation og øger sandsynligheden for misforståelse.
  5. Nøjagtighed. Mens JSON er mindre detaljeret end XML, er det ikke det mest kortfattede dataudvekslingsformat. For tjenester med stort volumen eller specielle formål skal du bruge mere effektive dataformater.

Hvornår skal jeg bruge JSON?

Hvis du skriver software, der kommunikerer med en browser eller en indbygget mobilapplikation, skal du bruge JSON som dataformat. Brug af et format som XML er et forældet valg og et rødt flag til front-end og mobil talent, som du ellers gerne vil tiltrække.

I tilfælde af server-til-server-kommunikation er det måske bedre med en serieiseringsramme som Apache Avro eller Apache Thrift. JSON er ikke et dårligt valg her, og det kan stadig være præcis, hvad du har brug for, men svaret er ikke så klart som for web- og mobilkommunikation.

Hvis du bruger NoSQL-databaser, sidder du stort set fast i det, databasen giver dig. I relationsdatabaser, der understøtter JSON som en type, er en god tommelfingerregel at bruge den så lidt som muligt. Relationsdatabaser er blevet tunet til strukturerede data, der passer til et bestemt skema. Mens de fleste nu understøtter mere fleksible data i form af JSON, kan du forvente et præstationshit, når du spørger efter egenskaber inden for disse JSON-objekter.

JSON er det allestedsnærværende, de facto-format til afsendelse af data mellem webservere og browsere og mobilapplikationer. Dens enkle design og fleksibilitet gør det let at læse og forstå og i de fleste tilfælde let at manipulere på det programmeringssprog, du vælger. Manglen på et strengt skema muliggør fleksibilitet i formatet, men denne fleksibilitet gør det undertiden svært at sikre, at du læser og skriver JSON korrekt.

JSON parser

Den del af en applikations kode, der omdanner data, der er gemt som JSON, til et format, som applikationen kan bruge, kaldes en parser. JavaScript inkluderer, som du forventer, en indbygget parser, metoden JSON.parse ().

Du skal muligvis gøre lidt mere arbejde for at arbejde med JSON på stærkt typede sprog som Scala eller Elm, men den udbredte vedtagelse af JSON betyder, at der er biblioteker og hjælpeprogrammer, der hjælper dig gennem alle de sværeste dele.

Webstedet json.org indeholder en omfattende liste over kodebiblioteker, du kan bruge til at analysere, generere og manipulere JSON på sprog så forskellige som Python, C # og COBOL.

JSON-værktøjer

Hvis du ønsker at manipulere eller undersøge JSON-kodede data direkte uden at skrive kode selv, er der et antal online-værktøjer, der kan hjælpe dig. Alle programmatiske ækvivalenter i kodebibliotekerne, der er linket til ovenfor, men du kan klippe og indsætte JSON-kode i disse browserbaserede værktøjer for at hjælpe dig med at forstå JSON bedre eller udføre hurtig og snavset analyse:

  • JSON Formatter: JSONLint vil formatere og validere vilkårlig JSON-kode.
  • JSON Viewer: Stack.hu har et websted, der opretter et interaktivt træ, der hjælper dig med at forstå strukturen i din JSON-kode.
  • JSON Beautifier: Hvis du vil "smukt udskrive" din JSON-kode med syntaksfarvning og lignende, kan Prettydiff hjælpe dig.
  • JSON Converter: Har du brug for hurtigt at flytte data fra et JSON-format til noget andet? Convertcsv.com har værktøjer, der kan konvertere JSON til CSV (som derefter kan åbnes i Excel) eller XML.

JSON-vejledning

Klar til at dykke ind og lære mere om, hvordan du arbejder med JSON i dine interaktive applikationer? Mozilla Developer Network har en god tutorial, der får dig i gang med JSON og JavaScript. Hvis du er klar til at gå videre til andre sprog, skal du tjekke vejledningen til brug af JSON med Java (fra Baeldung), med Python (fra DataCamp) eller med C # (fra Software Testing Help). Held og lykke!

Josh Fruhlinger bidrog til denne artikel.

$config[zx-auto] not found$config[zx-overlay] not found