JSON/fi
│
English (en) │
suomi (fi) │
日本語 (ja) │
한국어 (ko) │
polski (pl) │
русский (ru) │
中文(中国大陆) (zh_CN) │
Yleistä
JSON (JavaScript Object Notation) on datan esitysmuotoilu, joka tarjoaa standardoidun tiedonvaihtomuodon käyttämällä yksinkertaisesti tekstiä. Kuten nimestä voi päätellä, se alunperin pohjautui JavaScriptiin. Se on kuitenkin täysin kieliriippumaton. Lisäksi sitä on ihmisten helppo lukea ja kirjoittaa, sitä on myös helppo tietokoneiden jäsentää ja tuottaa.
Verrattuna XML:ään , se on enemmän ihmisen luettavissa.
JSON Olio
JSON olio ei ole mitään muuta kuin kokoelma pilkulla erotettuja nimi / arvo-pareja (kutsutaan usein jäseniksi) ne on suljettu aaltosulkeisiin:
{"nimi1":arvo1, "nimi2":arvo2 ...}
Jotta ihmisten olisi helpompi lukea ja havannoida ne niin nimi / arvo-parit ovat usein luetteloitu pystysuoraan:
{
"nimi1": arvo1,
"nimi2": arvo2
}
Nimi on merkkijono lainausmerkkien välissä, kun taas arvo voi olla jokin seuraavista:
- yksinkertainen merkkijono, numeerinen, boolean tai null arvo (merkkijono lainausmerkkien välissä):
{"id":1, "name":"John Doe", "married":false}
- taulukko, mikä on kokoelma pilkulla erotetuilla arvoilla hakasulkeiden välissä:
{"primeNumbers":[2, 3, 5, 7, 11, 13, 17], "oddNumbers":[1,3,5,7]}
- olio, mikä on kokoelma nimi / arvo-parit aaltosulkeiden välissä:
{"address":{"street":"145 Koinange Street", "City":"Nairobi", "Country":"Kenya"}}
JSON oliot voi muodostua myös useista sisäkkäisistä kerroksista jolloin niistä tulee entistä monimutkaisempia olioita:
{"user":
{ "userid": 1900,
"username": "jsmith",
"password": "secret",
"groups": [ "admins", "users", "maintainers"]
}
}
Validi JSON muoto
On olemassa muutamia sääntöjä ja ohjeita, joissa määritellään JSON syntaksi (katso RFC 4627 ):
There are a few rules and guidelines that define the JSON syntax (see RFC 4627):
- JSON oliot on kapseloitu aaltosulkujen väliiin
{ }
. Tyhjä olio voidaan esittää{ }
. - Taulukot on kapseloitu hakasulkujen väliin
[ ]
. Tyhjä joukko voidaan esittää[ ]
- Jäsenet muodostavat avainarvoparin.
- Avain on lainausmerkkien välissä.
- Kukin jäsen pitäisi sisältää yksilöllisen avaimen.
- Jos arvo on merkkijono niin se on oltava lainausmerkkien välissä.
- Boolean arvot esitetään true tai false sanoilla (vain pienet kirjaimet sallittu).
- Numero arvot esitetään käyttämällä kaksinkertaista (double) tarkkuutta liukulukuja muodossa. Tieteellinen merkintätapa on tuettu. Numeroissa ei pitäisi olla etunollia.
- "Offensive" -merkit esitetään käyttämällä kenoviivamerkkiä
- Null/tyhjät/Nil arvot esitetään null sanalla (vain pienet kirjaimet sallittu).
- Muut objektityypit, kuten päivämääriä, ei tueta. Ne on muunnettava esim. käyttämällä merkkijonoja.
- Jokainen jäsen olion tai kunkin matriisin arvon jälkeen on seurattava pilkku jos se ei ole viimeinen.
- JSON-tiedostojen tiedostopääte on .json
- MIME tyyppi json tiedostoilla on application/json
Toteutukset
JSON toteutukset ei ole kovin tiukkoja, paljon liikkumavaraa myönnetään asiakassovellukselle ja / tai jäsentimelle joka valvoo suuntaviivoja. Yleisesti kun kirjoitat koodi
- Ole sallivainen mitä hyväksyt
- Ole tiukka (noudata tiukasti standardia) mitä lähetät eteenpäin
On olemassa kaksi päätoteutusta JSONin käytöstä:
Virallinen JSON syntaksi
Tämä toteutus noudattaa tiukasti RFC 4627 suuntaviivoja ja ei salli siitä poikkeamista.
Javascript syntaksi
Tämä toteutus seuraa Javascript kieltä ja siten mahdollistaa muutaman poikkeamat viralliseen spesifikaatioon. Esimerkiksi:
- sallii lainausmerkittömät avaimet. Esimerkiksi
{name: "John Doe" }
- sallii heittomerkkien käytön avaimissa ja/tai merkkijonoissa sekä sallii niiden vapaamman käytön. Esimerkiksi
{'name': "John Doe", "language":'Pascal'}
- sallii viimeinen jäsen jälkeen perään pilkun taulukossa ja/tai oliossa. Esimerkiksi
{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}
Katso myös
- fcl-json pakkaus jossa on JSON toteutus FreePascal:n ja Lazarukseen.
- Virallinen JSON web-sivu
- Streaming JSON/de - (Alkuperäinen saksankielinen artikkeli)
- Streaming JSON - (englanninkielinen käännös saksankielisestä artikkelista )