JSON

JSON
https://json.org/ , https://json.org/json-fr.html og https://json.org/json-it.html
Generell informasjon
filutvidelse .json
mime-type application/json
formattype merkespråk
utvidet fra javascript
Standarder) STD 90 ( RFC  8259), ECMA-404 , ISO/IEC 21778:2017
åpent format Ja 

JSON ( JavaScript Object Notation ) er et enkelt tekstformat for datautveksling. Det er et undersett av JavaScript - objektets bokstavelige notasjon , selv om det på grunn av dets brede bruk som et alternativ til XML regnes som et språkuavhengig format.

En av de antatte fordelene med JSON fremfor XML som et datautvekslingsformat er at det er mye lettere å skrive en parser for det. I JavaScript kan en JSON-tekst enkelt analyseres ved hjelp av funksjonen eval(), noe som (på grunn av JavaScripts allestedsnærværende i nesten alle nettlesere ) har vært medvirkende til at den ble akseptert av AJAX -utviklerfellesskapet .

I praksis er argumenter for enkel utvikling av parsere eller deres ytelse av liten relevans, på grunn av sikkerhetsproblemene som oppstår ved bruk av eval()og fremveksten av naturlig XML-behandling innebygd i moderne nettlesere. Av den grunn brukes JSON ofte i miljøer der størrelsen på dataflyten mellom klient og server er av største betydning (derav bruken av Yahoo! , Google , Mozilla , osv., som betjener millioner av brukere) når kildedataene er eksplisitt klarert og hvor det ikke er viktig at du ikke har XSLT -behandling for å manipulere dataene på klienten.

Selv om JSON har en tendens til å bli vurdert som et alternativ til XML, er sannheten at bruken av JSON og XML i samme applikasjon ikke er uvanlig ; dermed må en klientapplikasjon som integrerer data fra Google Maps med værdata i SOAP ( Simple Object Access Protocol ) benytte seg av begge formatene.

I desember 2005, Yahoo! begynt å tilby valgfri JSON-støtte i noen av webtjenestene sine . [ 1 ]

Navn og uttale

engelsk uttales JSON akronymisk , som navnet på bokstaven J ( jay , /yéi/) etterfulgt av stavelsen "son". Det vanlige resultatet, med den første understrekede stavelsen (/yéson/), uttales på samme måte som navnet Jason, selv om Douglas Crockford , utvikler av JSON-formatet, understreker den andre stavelsen, som /yeisón/. [ 2 ]

spansk må du huske at JSON er et akronym, og at det noen ganger ikke er noen enkel måte å uttale dem på. I følge den ortografiske normen [ 3 ] vil det normale være å uttale det som /jotasón/. Noen uttaler det som /jason/, men det vil gå lenger bort fra uttalen av akronymet ved å introdusere en bokstav til som ikke finnes i akronymet (JASON) og derfor ville det være en feil uttale.

Noen som ikke er lingvister foretrekker å uttale akronymet på spansk på engelsk måte, [ 4 ] men det gjør det ikke mer korrekt, men det vil heller være mer typisk for amerikansk spanglish . FBI uttales ikke som /éfbiai/ på spansk, akkurat som /síaiei/ ikke uttales når man snakker om CIA. Det engelske akronymet ASAP ( så snart som mulig ) uttales /asap/ på spansk, ikke /eieseipi/, for språkøkonomi. I følge reglene i spansk kan det leksikaliseres som "jotasón/jotasones", men det er ingen bruk av det i akademiske tekster.

Syntaks

Datatypene som er tilgjengelige med JSON er:

{ "department" : 8 , "deptname" : "Salg" , "manager" : "Juan Rodríguez" , "ansatte" :[ { " firstname" : "Pedro" , "lastname" : "Fernández" },{ "name " : "Jacinto" , "surname" : "Benavente" } ] }

Behandlingsmodeller

Siden JSON er et mye brukt format for datautveksling, har APIer blitt utviklet for forskjellige språk (for eksempel ActionScript , C , C++ , C# , ColdFusion , Common Lisp , Delphi , E , Eiffel , Java , JavaScript , ML , Objective- C , Objective CAML , Perl , PHP , Python , Rebol , Ruby , Lua og Visual FoxPro ) som lar deg analysere, generere, transformere og behandle denne typen data.

De mest brukte programmeringsmodellene for å håndtere JSON på de forskjellige språkene er: [ 5 ]

  • Objektmodell.- Den komplette JSON lagres i minnet i et treformat. Dette treet er bla gjennom, analysert og modifisert med de riktige APIene. Siden den laster alt inn i minnet og deretter behandler det, bruker denne modellen mye ressurser. Det er imidlertid veldig fleksibelt å manipulere innholdet. Denne modellen er tillatt for eksempel i Java av JSR 353 og av Jackson -biblioteket .
  • Flytmodell: Data leses eller skrives i blokker. For eksempel, hver gang en blokk leses, genererer parseren passende hendelser for å indikere hvilken type blokk det er. Klienten kan behandle innholdet ved å lytte etter de aktuelle hendelsene. I tillegg er det klienten som bestemmer hvordan JSON leses, slik at innhold kan stoppes eller hoppes over midt i prosessen. Skriveprosessen har analoge egenskaper. For eksempel er denne modellen tillatt i java av JSR 353.
  • Konvertering av JSON-objekter til språkobjekter. I Java gjøres dette for eksempel av Jackson- og Gson- bibliotekene .

Bruker JSON

I teorien er det trivielt å analysere JSON til JavaScript ved å bruke JSON.parse()språkets innebygde funksjon. For eksempel:

myObject = JSON . parse ( json_data );

I praksis tilsier sikkerhetshensyn generelt mot bruk av eval på rådata, og en egen JavaScript-parser bør brukes for å sikre sikkerheten. Parseren levert av JSON.org bruker den eval()i sin parsefunksjon, og beskytter den med et regulært uttrykk slik at funksjonen bare ser sikre uttrykk.

Et eksempel på JSON-datatilgang ved bruk av XMLHttpRequest er:

var http_request = ny XMLHttpRequest (); var url = "http://example.net/jsondata.php" ; // Denne URL-en skal returnere JSON-data // Last ned JSON-dataene fra serveren. http_request . onreadystatechange = handle_json ; http_request . åpen ( "GET" , url , sant ); http_request . send ( null ); function handle_json () { if ( http_request . readyState == 4 ) { if ( http_request . status == 200 ) { var json_data = http_request . responsTekst ; var the_object = eval ( "(" + json_data + ")" ); } else { alert ( "Det var et problem med nettadressen." ); } http_request = null ; } }

Merk at bruken av XMLHttpRequest i dette eksemplet ikke støttes av alle nettlesere, siden det finnes syntaktiske variasjoner for Internet Explorer , Opera , Safari og Mozilla -baserte nettlesere . [ 6 ]

Det er også mulig å bruke <iframe>skjulte elementer for å be om dataene asynkront, eller bruke forespørsler <form target="url_to_cgi_script" />. Disse metodene var de vanligste før utbredt bruk av XMLHttpRequest.

Det er et bibliotek [ 7 ]​ for .NET-rammeverket som eksporterer .NET-klasser med JSON-syntaks for kommunikasjon mellom klient og server, begge veier.

JSON-eksempel

Nedenfor er et enkelt eksempel på menylinjedefinisjon ved bruk av JSON og XML.

JSON:

{ "menu" : { "id" : "file" , "value" : "File" , "popup" : { "menuitems" : [ { "value" : "New" , "onclick" : "CreateNewDoc()" },{ "value" : "Open" , "onclick" : "OpenDoc()" },{ "value" : "Close" , "onclick" : "CloseDoc()" } ] } } }

Det er en mulig JSON-representasjon av følgende XML:

<menu id= "file" value= "Fil" > <popup> <menuitem value= "New" onclick= "CreateNewDoc()" /> <menuitem value= "Open" onclick= "OpenDoc()" /> <menuitem value= "Close" onclick= "CloseDoc()" /> </popup> </menu>

Sammenligning med XML og andre markup-språk

Det er mange JSON-parsere på serversiden, med minst én parser for de fleste miljøer. På noen språk, som Java eller PHP , er det forskjellige implementeringer å velge mellom. I JavaScript er parsing mulig naturlig med JSON.parse(). Begge formatene mangler en mekanisme for å representere binære store objekter .

Uavhengig av XML-sammenligningen, kan JSON være veldig kompakt og effektiv hvis den brukes effektivt. For eksempel søket DHTML -applikasjonen i "BarracudaDrive" (på engelsk) . Arkivert fra originalen 21. mai 2006.  mottar katalogoppføringer som JSON fra server. Denne søkeapplikasjonen spør konstant serveren etter nye kataloger, og den er bemerkelsesverdig rask, selv over en treg tilkobling.

Serversidemiljøer krever vanligvis at et JSON-parserobjekt eller -funksjon bygges inn. Noen programmerere, spesielt de som er kjent med C-språket , finner JSON mer naturlig enn XML, men andre utviklere finner dens korte notasjonen noe forvirrende, spesielt når de har å gjøre med svært nestede eller dypt nestede data.

Det er flere sammenligninger mellom JSON og XML på JSON.org [ 8 ]

YAML er et supersett av JSON som prøver å overvinne noen av begrensningene. Selv om den er betydelig mer kompleks, [ 9 ] kan den fortsatt betraktes som lett. Ruby -programmeringsspråket bruker YAML som standard serialiseringsformat . Dermed er det mulig å håndtere JSON ganske enkelt.

Se også

Referanser

  1. Yahoo! . «Bruke JSON med Yahoo! Webtjenester» . Arkivert fra originalen 6. januar 2010 . Hentet 2. mars 2010 . 
  2. ^ "Doug Crockford "Google Tech Talks: JavaScript: The Good Parts " " . 7. februar 2009. 
  3. RAE. «akronym | Pan-Hispanic Dictionary of Doubts» . "Pan-Hispanic Dictionary of Doubts" . Hentet 25. juni 2021 . 
  4. Kapic, Edin (15. april 2016). ««Jotasón» og den (dårlige) uttalen av datatermer» . EdinKapic.com . Hentet 2. september 2018 . 
  5. RESTful Java Web Services. Jobinesh Purushothaman. Packt Publishing 2015. Andre utgave
  6. ".json-filutvidelse: Hva er JSON-filer til?" . åpne filer . Hentet 22. oktober 2021 . 
  7. http://ajax.schwarz-interactive.de Arkivert 7. mars 2011 på Wayback Machine .
  8. "Eksempelside" . JSON.org (på engelsk) . 
  9. Ippolito, Bob (19. juli 2005). "Hva skjedde med YAML?" (på engelsk) . Arkivert fra originalen 14. februar 2012 . Hentet 2012-11-22 . 

Eksterne lenker

veiledninger