, forståelse json,,,,, 5,,,,,,,,, 5,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, json (javascript objekt notat, som erklærer jeg "jason, og du kan udtale sig, men som er en tekstbaseret dataformat, der er beregnet til menneskeligt læsbare, let og let at sende mellem en server og en web client.dens syntaks er afledt af javascript - deraf navnet - - men det kan anvendes på de fleste sprog, herunder as3 og c #.,,,, eller hvis du har gjort meget programmering, kommer du på tværs af arrays før: samlinger af poster, der hver tildelt et bestemt tal. i json, et system i de første seks bogstaver i alfabetet, vil være repræsenteret på denne måde: ["a", "b", "c", "d", "e", "f"], as3 og javascript coders finder ovenstående opregning meget bekendt.det ligner den cmåde at definere et system, som du kan sikkert gætte, kantet parentes sige, "dette er et system", og kommaer, benyttes til at adskille forskellige elementer (bemærk, at der ikke er nogen komma efter det sidste element).hvis det sprog, som man analysere de json bruger nulbaseret arrays (og hvor mange sprog, ikke, disse dage?element 0 vil være "a", 1 vil være "b", 2 vil være "c" osv. for at gøre arrays lettere at læse, vil vi skriver ofte med ekstra nye replikker og mærke: ["a", "b", "c", "d", "e", "f"], konstatere, at der stadig er nogen komma efter det sidste element, så det er lidt underligt. vi behøver ikke at anvende strenge som elementer i en json system; vi kan også bruge tal sandt, falsk, og nul,.der er ingen strenge maskinskrivning, hvilket betyder, at du kan blande de typer af værdier, man bruger i et givet system.f.eks. er dette helt gyldige: ["æble", 3 912, nul, -7.2222202 "#", ikke sandt, falske] bemærk, at du skal bruge to citater (") til at omringe alle dine bånd og fælles citater («) er ikke tilladt.ja, dette er tilfældet, selv om javascript giver dig mulighed for at vedlægge tråde i enten type citat.hvis du ønsker at bruge to citater i json tråde, anvendelse, er "i stedet.,, genstande, et system er en samling af produkter, hvor de er tildelt et bestemt tal.en ting er en samling af produkter, hvor de er tildelt en specifik, snor.de produkter, der er kaldt, værdier, og de tråde, der bruges til at identificere dem, der kaldes, nøgler.nogle programmeringssprog kalder denne type data, struktur, hash tabel, eller en kort. vi kunne repræsentere befolkningens alder i et objekt som så: {"alan": 44: "john": 58 "brian": 19 "eliza": 4, jessie ": 58}, curly bøjle siger," det er et objekt ", og som med arrays. komma adskille forskellige elementer.men de elementer, som er givet i par, denne gang.det er lettere at se, hvis vi tilføjer nye replikker og mærke: {"alan": 44: "john": 58 "brian": 19 "eliza": 4, jessie ": 58}, i hvert par et kolon adskiller den nøgle (som er en serie) af værdien (som i dette tilfælde er et antal).da vi lavede et system, vi har ikke brug for at præcisere, hvilke tal hvert element blev tildelt til (dvs. vi havde kun brug for at specificere de værdier og ikke de nøgler), fordi de blev tildelt på grundlag af den rækkefølge, hvori de er skrevet på nettet. i stedet for at anmode den anden eller det femte element, som de ville ved adgang til et system med en genstand, skal du anmode om alan "- eller" eliza "- element, for at gøre tingene mere forvirrende, objekter også tillade dig at bruge strenge som værdier - ikke bare nøglerne.So you could have an object like this:, { \t"Activetuts+": "http://active.tutsplus.com/", \t"Psdtuts+": "http://psd.tutsplus.com/", \t"Nettuts+": "http://net.tutsplus.com/", \t"Aetuts+": "http://ae.tutsplus.com/", \t"Vectortuts+": "http://vector.tutsplus.com/", \t"Audiotuts+": "http://audio.tutsplus.com/", \t"Cgtuts+": "http://cg.tutsplus.com/", \t"Phototuts+": "http://photo.tutsplus.com/", \t"Webdesigntuts+": "http://webdesign.tutsplus.com/", \t"Mobiletuts+": "http://mobile.tutsplus.com/" },This way, to retrieve the URL for a given Tuts+ site, you can request it using the name of the site as a key. men det modsatte er ikke sandt - - og du kan ikke bruge "http://cg.tutsplus.com/" efter "cgtuts +". de samme regler om forskellige former for tilbud gælder for genstande til arrays.ting kan også anvende strenge, tal sandt, falsk, og, for, som værdier (men kun tråde som nøgler).,, russisk, genstande og systemer kan også opbevares andre objekter og arrays.This lets us create nested data structures; for example:, { \t"Activetuts+": { "url": "http://active.tutsplus.com/", "hasPremium": true }, \t"Psdtuts+": { "url": "http://psd.tutsplus.com/", "hasPremium": true }, \t"Nettuts+": { "url": "http://net.tutsplus.com/", "hasPremium": true }, \t"Aetuts+": { "url": "http://ae.tutsplus.com/", "hasPremium": true }, \t"Vectortuts+": { "url": "http://vector.tutsplus.com/", "hasPremium": true }, \t"Audiotuts+": { "url": "http://audio.tutsplus.com/", "hasPremium": true }, \t"Cgtuts+": { "url": "http://cg.tutsplus.com/", "hasPremium": true }, \t"Phototuts+": { "url": "http://photo.tutsplus.com/", "hasPremium": true }, \t"Webdesigntuts+": { "url": "http://webdesign.tutsplus.com/", "hasPremium": false }, \t"Mobiletuts+": { "url": "http://mobile.tutsplus.com/", "hasPremium": false } },Let's see that with a little more whitespace:, { \t"Activetuts+": \t{ \t\t"url": "http://active.tutsplus.com/", \t\t"hasPremium": true \t}, \t"Psdtuts+": \t{ \t\t"url": "http://psd.tutsplus.com/", \t\t"hasPremium": true \t}, \t"Nettuts+": \t{ \t\t"url": "http://net.tutsplus.com/", \t\t"hasPremium": true \t}, \t"Aetuts+": \t{ \t\t"url": "http://ae.tutsplus.com/", \t\t"hasPremium": true \t}, \t"Vectortuts+": \t{ \t\t"url": "http://vector.tutsplus.com/", \t\t"hasPremium": true \t}, \t"Audiotuts+": \t{ \t\t"url": "http://audio.tutsplus.com/", \t\t"hasPremium": true \t}, \t"Cgtuts+": \t{ \t\t"url": "http://cg.tutsplus.com/", \t\t"hasPremium": true }, "phototuts +": {"url: http: //foto. tutsplus. kom /", "haspremium": den virkelige}, "webdesigntuts +": {"url: http: //////////////webdesign. tutsplus. kom /", "haspremium": falske}, "mobiletuts +": {"url: http: //mobile. tutsplus. kom /", "haspremium": falske), som hver indeholder to områder: et objekt med nøglen "url", hvis værdi er en streng, der indeholder url i området, og en med nøglen, haspremium, hvis værdi er en boolean - det er sandt, hvis lokaliteten er en præmie, pkt. vi er ikke begrænset til, med nøjagtig samme struktur for hver genstand i json, selv om.for eksempel kan vi tilføje en ekstra url, der peger på, at præmien program url, men kun for de områder, der har en: {"activetuts +": {"url: http: //aktiv. tutsplus. kom /", "haspremium": det er rigtigt, "premiumurl": "http://tutsplus.com/premium-program/active-premium/"}, "psdtuts +": {"url: http: //psd. tutsplus. kom /", "haspremium": det er rigtigt, "premiumurl": "http://tutsplus.com/premium-program/psd-premium/"), "nettuts +": {"url: http: //net. tutsplus. kom /", "haspremium": det er rigtigt, "premiumurl": "http://tutsplus.com/premium-program/net-premium/"), "aetuts +": {"url: http: //ae. tutsplus. kom /", "haspremium": det er rigtigt, "premiumurl": "http://tutsplus.com/premium-program/ae-premium/"), og"vectortuts +": {"url: http: //vector. tutsplus. kom /", "haspremium": det er rigtigt, "premiumurl": "http://tutsplus.com/premium-program/vector-premium/"), "audiotuts +": {"url: http: //lyd. tutsplus. kom /", "haspremium" - sandt, "premiumurl": "http://tutsplus.com/premium-program/audio-premium/"), "cgtuts +": {"url: http: //cg. tutsplus. kom /", "haspremium": det er rigtigt, "premiumurl": "http://tutsplus.com/premium-program/cg-premium/"), "phototuts +": {"url: http: ////////foto. tutsplus. kom /", "haspremium": det er rigtigt, "premiumurl": "http://tutsplus.com/premium-program/photo-premium/"), "webdesigntuts +": {"url: http: //////////////webdesign. tutsplus. kom /", "haspremium": falske}, "mobiletuts + ": {" url: http: //mobile. tutsplus. kom /"," haspremium ": falske}}, vi kunne også omfatte en bred vifte af alle de nyeste præmie tutorials for en given websted (jeg vil vise activetuts + her, og begrænse det til et par praemier, red rum), (" activetuts + ": {" url: http: //aktiv. tutsplus. kom /"," haspremium ": det er rigtigt," premiumurl ":" http://tutsplus.com/premium-program/active-premium/"" previouspremiums ": [http: ////////////////////////////tutsplus. kom med", "http: ////////aktiv. tutsplus. kom /tutorials /spil /create-a-space-shooter-game-in-flash-using-as3http: //tutsplus. kom /med /", "http: //aktiv. tutsplus. kom /tutorials /spil /obscuring-and-revealing-scenes-with-as3http: //tutsplus. kom /med /", "http://active.tutsplus.com/tutorvarer /spil /building-a-dynamic-shadow-casting-engine-in-as3http: //tutsplus. kom /med /"," http://tutsplus.com/join/"]) /* * klip!* * /"mobiletuts +": {"url: http: //mobile. tutsplus. kom /", "haspremium": falske), et system giver mening for opførelse på listen af præmier, fordi jeg arbejder under den antagelse, at en app, der faktisk læser disse data er lige til at udvise en liste over præmie tutorials, snarere end for at få adgang til dem i henhold til deres navn, - - så vi ikke er nødt til at give dem en række afgørende. vi kunne tage dette yderligere, {"activetuts +": {"url: http: //aktiv. tutsplus. kom /", "præmie": {"haspremium": det er rigtigt, "premiumurl": "http: //////////////tutsplus. kom /præmie program /aktiv præmie - /", "previouspremiums": [{"titel": "skabe en customizable flash - anvendelse", "url: http: //////////////tutsplus. kom /med /"} {" titel ":" at skabe et rum, shooter spil i flash med as3 "," url: http: //aktiv. tutsplus. kom /tutorials /spil /create-a-space-shooter-game-in-flash-using-as3http: //tutsplus. kom /med /"} {" titel ":" skjule og afslørende scener med as3 "," url: http: //aktiv. tutsplus. kom /tutorials /spil /obscuring-and-revealing-scenes-with-as3http: //tutsplus. kom /med /"} {" titel ":" opbygningen af en dynamisk skygge kaster motor i as3 "," url: http: //aktiv. tutsplus. kom /tutorials /spil /building-a-dynamic-shadow-casting-engine-in-as3http: //tutsplus. kom /med /"} {" titel ":" gennemførelse af informationstiltag i den envato fællesskabets podcast "," url ":" http://tutsplus.com/join/"/* *}]}, klip!* * /"mobiletuts +": {"url: http: //mobile. tutsplus. kom /", "præmie": {"haspremium": falske}}}, føj!hvis vi ville, kunne vi skabe genstande, der indeholder navne og profil url - adresser for hver enkelt forfatter af hver præmie tutor - - kan du finde den bedste måde at gøre det på?- systemer inden for systemer kan være nyttige, navnlig for at spille spil.dette kunne være den nuværende indretning af et kryds og bolle bord: [, [1, 2, 0], [0, 1, 0] [0, 2, 1]], ikke se det?prøv at fjerne nogle whitespace:, [[1,2,0], [0,1,0], [0,2,1]], 1, er et nul, 2, er et kors, og 0, er en tom plads.nuller vinder!og jeg er sikker på, at du kan se, hvordan noget lignende kunne anvendes til krigsskibe eller forbinde 4 eller minestryger.for yderligere oplysninger om indlejrede systemer, tjek min forrige lektion., ved hjælp af json med forskellige platforme, da json er så populær, er der parsers, værktøjer og biblioteker, at afkode et programmeringssprog, så en anden kan forstå den) og generatorer, værktøjer og biblioteker, at gøre det modsatte, frembringe en programmering sprog til et andet) til rådighed for de fleste programmeringssprog.bare gennemsøge, [json parser (navnet på dit sprog)].jeg vil gerne fremhæve et par, der er relevante for activetuts + læsere.,, for flash - og as3, standard bibliotek for ind - og afkodning af json data i as3 er as3corelib; se min vejledning i brug af eksterne biblioteker, hvis du ikke er sikker på, hvordan til at installere det. kan du afkode et json formaterede snor til as3 genstande og arrays ved at overføre det til, kom. adobe. serialization. json. json. decode(), og afkastet værdi vil enten være et system eller en genstand, afhængigt af json.hvis du går, falske, som et andet argument om, at dekoderen vil ikke følge json standard så strengt, så du kan slippe af sted med sioppier formatering. du kan frembringe et as3 formål eller system (som kan indeholde indlejrede genstande og arrays) til en json snor ved at overføre det til, kom. adobe. serialization. json. json. encode(), og afkastet værdi vil blive en snor. det er blevet meddelt, at fremtidige udgaver af flash vil omfatte lokalt json parsing, så vil der snart ikke være nødt til at bruge as3corelib til formålet.,,. netto (herunder silverlight), til at analysere json, tilføjes en henvisning til systemet. json,.så,ved hjælp af systemet. json; afkodet = jsonvalue. analysere (jsonstring); //kan være en jsonprimitive, jsonarray, eller jsonobject, afhængigt af json gik, for at frembringe et objekt for en json snor er lidt mere kompliceret.du skal først og fremmest skabe en data - kontrakt for objekttype, de ønsker at registrere, lad os kalde vores ting, og det egentlige mål, mything,.så,ved hjælp af system.runtime.serialization.json; memorystream mystream = nye memorystream(); datacontractjsonserializer jsonencoder = nye datacontractjsonserializer (type (,) jsonencoder. writeobject (mystream, mything); mystream. holdning = 0, streamreader sr = nye streamreader (mystream); indkodet =. readtoend(); man kan også anvende denne metode til at afkode et json snor til en særlig klasse af formål,ved hjælp af system.runtime.serialization.json; mystream. holdning = 0, myotherthing = ridder. readobject (mystream); //du skal kaste med ting, for yderligere oplysninger, se msdn sider arbejder med json data og hvordan: sandt og deserialize json data, for javascript. (og dermed html 5 apps), du kan bare give json fejlbold. andenng, eval(), i javascript, men dette er en forfærdelig sikkerhedsrisiko.de fleste moderne browsere støtte en funktion, json. parse(),, der skal analysere en json snor i javascript genstande, og json. stringify(),, som vil gøre en javascript formål eller array i en json snor. douglas eller skabt et bibliotek for at gøre dette i ældre browsere; det er tilgængelige på github.,, enhed, der er en cforsamling kaldet litjson, som du kan bruge i din enhed projekter for at analysere og skabe json.du kan bruge den, selv om deres projekt er skrevet i javascript eller boo snarere end c #., at afkode enhed, gøre indsigelse mod en json snor:,ved hjælp af litjson; snor jsonstring = jsonmapper.tojson (myobject), for at frembringe en json snor til en enhed objekt af typen:,ved hjælp af litjson; det mything = jsonmapper. modsætte sig < ting > (jsonstring), litjson håndbog er stor, og jeg anbefaler, at man læser det for mere vejledning.,, til andre sprog, json.org har en lang liste af biblioteker for forskellige platforme og sprog, - - og du kan søge på google, som nævnt ovenfor), at stedet har også nogle store visualitioner af, hvordan json kan være opbygget, og mange detaljer at gå ud over det, jeg har forklaret i denne hurtige indførelse.tjek det ud, hvis du vil vide mere.,