Programmering

Hva er JSON? Et bedre format for datautveksling

JavaScript Object Notation er en skjemafri tekstbasert representasjon av strukturerte data som er basert på nøkkelverdipar og ordnede lister. Selv om JSON er avledet fra JavaScript, støttes det enten naturlig eller via biblioteker på de fleste store programmeringsspråk. JSON brukes ofte, men ikke utelukkende, til å utveksle informasjon mellom webklienter og webservere.

I løpet av de siste 15 årene har JSON blitt allestedsnærværende på nettet. I dag er det det valgte formatet for nesten alle offentlig tilgjengelige nettjenester, og det brukes ofte også for private nettjenester.

Populariteten til JSON har også resultert i innfødt JSON-støtte fra mange databaser. Relasjonsdatabaser som PostgreSQL og MySQL leveres nå med innfødt støtte for lagring og spørring av JSON-data. NoSQL-databaser som MongoDB og Neo4j støtter også JSON, selv om MongoDB bruker en litt modifisert, binær versjon av JSON bak kulissene.

I denne artikkelen tar vi en rask titt på JSON og diskuterer hvor den kom fra, fordelene i forhold til XML, ulempene, når du skal bruke den, og når du bør vurdere alternativer. Men først, la oss dykke ned i det nitty gritty av hvordan JSON ser ut i praksis.

JSON eksempel

Her er et eksempel på data kodet i JSON:

{

“FirstName”: “Jonathan”,

“LastName”: “Freeman”,

“LoginCount”: 4,

“IsWriter”: sant,

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

“Kjæledyr”: [

    {

“Navn”: “Lilly”,

“Type”: “Raccoon”

    }

  ]

}

Strukturen ovenfor definerer tydelig noen attributter til en person. Det inkluderer for- og etternavn, antall ganger personen har logget på, enten denne personen er forfatter, en liste over selskaper personen jobber med, og en liste over personens kjæledyr (bare ett, i dette tilfellet). En struktur som den ovenfor kan sendes fra en server til en nettleser eller en mobilapplikasjon, som deretter vil utføre noen handlinger, for eksempel å vise dataene eller lagre dem for senere referanse.

JSON er et generisk dataformat med et minimalt antall verdityper: strenger, tall, booleans, lister, objekter og null. Selv om notasjonen er en delmengde av JavaScript, er disse typene representert i alle vanlige programmeringsspråk, noe som gjør JSON til en god kandidat til å overføre data på tvers av språkgap.

JSON-filer

JSON-data lagres i filer som slutter med .json-utvidelsen. I tråd med JSONs menneskelesbare etos er dette ganske enkelt vanlige tekstfiler og kan enkelt åpnes og undersøkes. Som SQLizer-bloggen forklarer, er dette også en nøkkel til JSONs bredere interoperabilitet, ettersom omtrent alle språk du kan navngi kan lese og behandle vanlige tekstfiler, og de er enkle å sende over Internett.

Hvorfor skal jeg bruke JSON?

For å forstå nytten og betydningen av JSON, må vi forstå litt om historien til interaktivitet på nettet.

På begynnelsen av 2000-tallet begynte interaktiviteten på nettet å transformere seg. På den tiden fungerte nettleseren hovedsakelig som en dum klient for å vise informasjon, og serveren gjorde alt det harde arbeidet for å forberede innholdet til visning. Når en bruker klikker på en lenke eller en knapp i nettleseren, vil en forespørsel bli sendt til serveren, serveren vil forberede den informasjonen som trengs som HTML, og nettleseren vil gjengi HTML som en ny side. Dette mønsteret var tregt og ineffektivt, og krevde at nettleseren gjengir alt på siden, selv om bare en del av siden hadde endret seg.

Fordi omlastning av hele siden var kostbart, så webutviklere på nyere teknologier for å forbedre den generelle brukeropplevelsen. I mellomtiden viste muligheten til å lage nettforespørsler i bakgrunnen mens en side ble vist, som nylig ble introdusert i Internet Explorer 5, å være en levedyktig tilnærming til å laste inn data trinnvis for visning. I stedet for å laste inn hele siden på nytt, vil du klikke på oppdateringsknappen og utløse en nettforespørsel som lastes inn i bakgrunnen. Når innholdet ble lastet inn, kunne dataene manipuleres, lagres og vises på siden ved hjelp av JavaScript, det universelle programmeringsspråket i nettlesere.

REST vs. SOAP: JSON-forbindelsen

Opprinnelig ble disse dataene overført i XML-format (se nedenfor for et eksempel) ved hjelp av en meldingsprotokoll kalt SOAP (Simple Object Access Protocol). Men XML var omfattende og vanskelig å administrere i JavaScript. JavaScript hadde allerede objekter, som er en måte å uttrykke data på språket, så Douglas Crockford tok en delmengde av dette uttrykket som en spesifikasjon for et nytt datautvekslingsformat og kalt det JSON. JSON var mye lettere for folk å lese og for nettlesere å analysere.

I løpet av 00-årene begynte en annen nettjenesteteknologi, kalt Representational State Transfer, eller REST, å innhente SOAP for å overføre data. En av de store fordelene med programmering ved bruk av REST APIer er at du kan bruke flere dataformater - ikke bare XML, men også JSON og HTML. Da webutviklere foretrakk JSON fremfor XML, kom de også til å favorisere REST fremfor SOAP. Som Kostyantyn Kharchenko uttrykte det på Svitla-bloggen, "RESTs suksess skyldes på mange måter JSON-format på grunn av dets enkle bruk på forskjellige plattformer."

I dag er JSON de facto-standarden for utveksling av data mellom web- og mobilklienter og back-end-tjenester.

JSON vs. XML

Som nevnt ovenfor er hovedalternativet til JSON XML. Imidlertid blir XML stadig mindre vanlig i nye systemer, og det er lett å se hvorfor. Nedenfor er en versjon av dataene du så ovenfor, denne gangen i XML:

Jonathan

Freeman

  4

ekte

Spantree Technology Group

Lilly

Vaskebjørn

I tillegg til å være mer utførlig (nøyaktig dobbelt så utdypende i dette tilfellet), introduserer XML også en viss tvetydighet når man analyserer til en JavaScript-vennlig datastruktur. Konvertering av XML til et JavaScript-objekt kan ta fra ti til hundrevis av kodelinjer og til slutt krever tilpasning basert på det spesifikke objektet som blir analysert. Å konvertere JSON til et JavaScript-objekt tar én kode med kode og krever ingen forkunnskaper om objektet som blir analysert.

Begrensninger av JSON

Selv om JSON er et relativt konsistent, fleksibelt dataformat som er lett å jobbe med på mange programmeringsspråk, er det noen ulemper med formatet. Her er de fem hovedbegrensningene:

  1. Ingen skjema. På den ene siden betyr det at du har total fleksibilitet til å representere dataene på den måten du vil. På den annen side betyr det at du ved et uhell kan lage feilformede data veldig enkelt.
  2. Bare én nummertype: IEEE-754 flytpunktsformat med dobbel presisjon. Det er ganske munnfull, men det betyr ganske enkelt at du ikke kan dra nytte av de forskjellige og nyanserte nummertypene som er tilgjengelige på mange programmeringsspråk.
  3. Ingen datatype. Denne utelatelsen betyr at utviklere må ty til å bruke strengrepresentasjoner av datoer, noe som fører til formatering av avvik, eller må representere datoer i form av millisekunder siden epoken (1. januar 1970).
  4. Ingen kommentarer. Dette gjør det umulig å kommentere felt inline, noe som krever ytterligere dokumentasjon og øker sannsynligheten for misforståelse.
  5. Rettferdighet. Mens JSON er mindre omfattende enn XML, er det ikke det mest kortfattede datautvekslingsformatet. For tjenester med høyt volum eller spesielle formål, vil du bruke mer effektive dataformater.

Når skal jeg bruke JSON?

Hvis du skriver programvare som kommuniserer med en nettleser eller en mobil applikasjon, bør du bruke JSON som dataformat. Å bruke et format som XML er et foreldet valg og et rødt flagg til front-end og mobil talent du ellers vil tiltrekke deg.

Når det gjelder server-til-server-kommunikasjon, kan det være bedre å bruke et serialiseringsrammeverk som Apache Avro eller Apache Thrift. JSON er ikke et dårlig valg her, og kan fortsatt være akkurat det du trenger, men svaret er ikke så klart som for nett- og mobilkommunikasjon.

Hvis du bruker NoSQL-databaser, sitter du ganske mye fast med hva databasen gir deg. I relasjonsdatabaser som støtter JSON som en type, er en god tommelfingerregel å bruke den så lite som mulig. Relasjonsdatabaser er innstilt for strukturerte data som passer til et bestemt skjema. Mens de fleste nå støtter mer fleksible data i form av JSON, kan du forvente et ytelseshit når du spør etter egenskaper innenfor disse JSON-objektene.

JSON er det allestedsnærværende, de facto-formatet for sending av data mellom webservere og nettlesere og mobilapplikasjoner. Den enkle designen og fleksibiliteten gjør det enkelt å lese og forstå, og i de fleste tilfeller lett å manipulere på det programmeringsspråket du ønsker. Mangelen på et strengt skjema muliggjør fleksibilitet i formatet, men den fleksibiliteten gjør det noen ganger vanskelig å sikre at du leser og skriver JSON riktig.

JSON-parser

Den delen av applikasjonens kode som transformerer data som er lagret som JSON til et format applikasjonen kan bruke kalles a parser. JavaScript inkluderer, som du forventer, en naturlig parser, JSON.parse () -metoden.

Du må kanskje gjøre litt mer arbeid for å jobbe med JSON på sterkt typede språk som Scala eller Elm, men den utbredte adopsjonen av JSON betyr at det finnes biblioteker og verktøy som hjelper deg gjennom alle de vanskeligste delene.

Nettstedet json.org inneholder en omfattende liste over kodebiblioteker du kan bruke til å analysere, generere og manipulere JSON, på forskjellige språk som Python, C # og COBOL.

JSON-verktøy

Hvis du ønsker å manipulere eller undersøke JSON-kodede data direkte, uten å skrive kode selv, er det en rekke elektroniske verktøy som kan hjelpe deg. Alle programmatiske ekvivalenter i kodebibliotekene som er koblet til ovenfor, men du kan kutte og lime inn JSON-kode i disse nettleserbaserte verktøyene for å hjelpe deg med å forstå JSON bedre eller utføre rask og skitten analyse:

  • JSON Formatter: JSONLint vil formatere og validere vilkårlig JSON-kode.
  • JSON Viewer: Stack.hu har et nettsted som vil lage et interaktivt tre for å hjelpe deg med å forstå strukturen til JSON-koden din.
  • JSON Beautifier: Hvis du vil "pent skrive ut" JSON-koden din, med syntaksfarging og lignende, kan Prettydiff hjelpe deg.
  • JSON Converter: Trenger du raskt å flytte data fra et JSON-format til noe annet? Convertcsv.com har verktøy som kan konvertere JSON til CSV (som deretter kan åpnes i Excel) eller XML.

JSON opplæring

Klar til å dykke inn og lære mer om hvordan du jobber med JSON i dine interaktive applikasjoner? Mozilla Developer Network har en flott opplæring som kommer i gang med JSON og JavaScript. Hvis du er klar til å gå videre til andre språk, kan du sjekke ut veiledningen om bruk av JSON med Java (fra Baeldung), med Python (fra DataCamp) eller med C # (fra Software Testing Help). Lykke til!

Josh Fruhlinger bidro til denne artikkelen.