json լեզու. JSON: Հիմունքներ
Դուք, անշուշտ, երբևէ լսել եք JSON-ի մասին: Ի՞նչ է դա։ Ի՞նչ կարող է դա անել և ինչպես օգտագործել այն:
Այս ձեռնարկում մենք կանդրադառնանք JSON-ի հիմունքներին և կներառենք հետևյալ կետերը.
- Ի՞նչ է JSON-ը:
- Ինչի համար է օգտագործվում JSON-ը:
- Ինչպե՞ս ստեղծել JSON տող:
- JSON տողի պարզ օրինակ:
- Եկեք համեմատենք JSON-ը և XML-ը:
- Ինչպե՞ս աշխատել JSON-ի հետ JavaScript-ում և PHP-ում:
JSON-ը կառուցվածքային տվյալներ պահելու և փոխանցելու պարզ, տեքստի վրա հիմնված միջոց է: Պարզ շարահյուսությամբ դուք կարող եք հեշտությամբ պահել որևէ բան՝ մեկ թվից մինչև տողեր, զանգվածներ և առարկաներ պարզ տեքստում: Դուք կարող եք նաև միավորել զանգվածներն ու օբյեկտները՝ տվյալների բարդ կառուցվածքներ ստեղծելու համար:
Երբ JSON տողը ստեղծվի, հեշտ է այն ուղարկել այլ հավելված կամ ցանցի մեկ այլ վայր, քանի որ այն պարզ տեքստ է:
JSON-ն ունի հետևյալ առավելությունները.
- Այն կոմպակտ է:
- Նրա նախադասությունները հեշտ է կարդալ և կազմել ինչպես մարդկանց, այնպես էլ համակարգիչների կողմից:
- Այն կարող է հեշտությամբ փոխակերպվել տվյալների կառուցվածքի ծրագրավորման լեզուների մեծ մասի համար (թվեր, տողեր, բուլյաններ, զանգվածներ և այլն)
- Ծրագրավորման շատ լեզուներ ունեն գործառույթներ և գրադարաններ JSON կառուցվածքներ կարդալու և ստեղծելու համար:
JSON անունը նշանակում է JavaScript Object Notation: Ինչպես անունն է հուշում, այն հիմնված է օբյեկտների (ինչպես այլ լեզուներով ասոցիատիվ զանգվածների ստեղծման) և զանգվածների սահմանման եղանակի վրա:
Ինչի համար է օգտագործվում JSON-ը:JSON-ի ամենատարածված օգտագործումը սերվերից բրաուզեր ուղարկելն է: Որպես կանոն, JSON տվյալները առաքվում են AJAX-ի միջոցով, որը թույլ է տալիս զննարկիչին և սերվերին հաղորդակցվել առանց էջը վերաբեռնելու:
Կարող եք նաև օգտագործել JSON-ը՝ զննարկիչից տվյալներ սերվեր ուղարկելու համար՝ փոխանցելով JSON տողը որպես պարամետր GET կամ POST հարցումներին: Բայց այս մեթոդը ավելի քիչ տարածված է, քանի որ տվյալների փոխանցումը AJAX հարցումների միջոցով կարող է պարզեցվել: Օրինակ, ապրանքի ID-ն կարող է ներառվել URL-ում որպես GET հարցումի մաս:
jQuery գրադարանն ունի մի քանի մեթոդներ, ինչպիսիք են getJSON() և parseJSON(), որոնք հեշտացնում են JSON-ի միջոցով տվյալների առբերումը AJAX հարցումների միջոցով:
Ինչպե՞ս ստեղծել JSON տող:Կան մի քանի հիմնական կանոններ JSON տող ստեղծելու համար.
- JSON տողը պարունակում է կամ արժեքների զանգված կամ օբյեկտ (անուն/արժեք զույգերի ասոցիատիվ զանգված):
- Զանգվածփակցված է քառակուսի փակագծերում ([ և ]) և պարունակում է ստորակետերով բաժանված արժեքների ցանկ:
- Օբյեկտփակցված է գանգուր փակագծերում (( և )) և պարունակում է անուն/արժեք զույգերի ստորակետերով բաժանված ցուցակ:
- անուն/արժեք զույգբաղկացած է դաշտի անվանումից, որը փակցված է կրկնակի չակերտներով, որին հաջորդում է երկու կետ (:) և դաշտի արժեքը:
- Իմաստըզանգվածում կամ օբյեկտում կարող են լինել.
- Թիվ (ամբողջ կամ լողացող կետ)
- Տող (կրկնակի չակերտներով)
- Բուլյան արժեք (ճշմարիտ կամ սխալ)
- Մեկ այլ զանգված (փակված է քառակուսի փակագծերում)
- Մեկ այլ առարկա (փակված գանգուր ամրագոտիներով)
- զրոյական արժեք
Տողի մեջ կրկնակի չակերտներ ներառելու համար հարկավոր է օգտագործել հետշեղը՝ \": Ինչպես ծրագրավորման շատ լեզուների դեպքում, դուք կարող եք հսկիչ նիշեր և վեցանկյուն կոդեր տեղադրել տողի մեջ՝ դրանցից առաջ անցնելով հետշեղով: Մանրամասների համար տես JSON-ի կայքը:
Պարզ JSON լարային օրինակՍտորև բերված է JSON ձևաչափով պատվիրելու օրինակ.
( «orderID»: 12345, «shopperName»: «Vanya Ivanov», «shopperEmail»: [էլփոստը պաշտպանված է]", "contents": [ ( "productID": 34, "productName": "Super product", "quantity": 1 ), ( "productID": 56, "productName": "Miracle product", "quantity": 3 ) ], «պատվերն ավարտված է»: ճշմարիտ )
Եկեք մանրամասն նայենք տողին.
- Մենք ստեղծում ենք օբյեկտ՝ օգտագործելով գանգուր փակագծեր (( և )):
- Օբյեկտն ունի մի քանի անուն/արժեք զույգ՝ «orderID»: 12345 «orderId» անունով հատկություն և 12345 «shopperName» ամբողջ արժեք. «Vanya Ivanov» սեփականություն՝ «shopperName» անունով և լարային արժեք՝ «Vanya Ivanov»: " "shopperEmail": " [էլփոստը պաշտպանված է]« «shopperEmail» անունով հատկություն՝ տողային արժեքով» [էլփոստը պաշտպանված է]« «բովանդակություն».
- «Բովանդակություն» զանգվածում կա 2 օբյեկտ, որոնք ներկայացնում են պատվերի առանձին տարրեր: Յուրաքանչյուր օբյեկտ պարունակում է 3 հատկություն՝ productID, productName և քանակություն:
Ի դեպ, քանի որ JSON-ը հիմնված է JavaScript օբյեկտների հայտարարագրման վրա, դուք կարող եք արագ և հեշտությամբ վերը նշված JSON տողը դարձնել JavaScript օբյեկտ.
var cart = ( «պատվերի ID»: 12345, «shopperName»: «Վանյա Իվանով», «shopperEmail»: [էլփոստը պաշտպանված է]", "contents": [ ( "productID": 34, "productName": "Super product", "quantity": 1 ), ( "productID": 56, "productName": "Miracle product", "quantity": 3 ) ], "orderCompleted": true);
JSON-ի և XML-ի համեմատությունՇատ առումներով դուք կարող եք JSON-ի մասին մտածել որպես XML-ի այլընտրանք, գոնե վեբ հավելվածների տարածքում: AJAX-ի հայեցակարգն ի սկզբանե հիմնված էր XML-ի օգտագործման վրա՝ սերվերի և բրաուզերի միջև տվյալների փոխանցման համար: Սակայն վերջին տարիներին JSON-ն ավելի ու ավելի տարածված է դարձել AJAX տվյալների փոխադրման համար:
Թեև XML-ը ապացուցված տեխնոլոգիա է, որն օգտագործվում է բավականին մեծ թվով հավելվածներում, JSON-ն ունի առավել կոմպակտ և ավելի հեշտ ճանաչելի տվյալների ձևաչափ լինելու առավելությունը:
Ահա թե ինչ տեսք կունենա վերը նշված օրինակի օբյեկտը XML-ում.
պատվերի ID 12345 գնորդի անունը Վանյա Իվանով գնորդ Էլփոստ [էլփոստը պաշտպանված է]բովանդակություն productID 34 productName Super արտադրանքի քանակություն 1 productID 56 productName Miracle ապրանքի քանակություն 3 պատվեր Ավարտված է ճիշտ
XML տարբերակը զգալիորեն ավելի մեծ է: Իրականում այն 1128 նիշ է, մինչդեռ JSON տարբերակը ընդամենը 323 նիշ է: XML տարբերակը նույնպես բավականին դժվար է հասկանալ:
Իհարկե, սա արմատական օրինակ է։ Եվ հնարավոր է ստեղծել ավելի կոմպակտ XML գրառում: Բայց նույնիսկ այն զգալիորեն ավելի երկար կլինի, քան JSON-ի համարժեքը:
JavaScript-ում JSON տողի հետ աշխատելըJSON-ն ունի պարզ ձևաչափ, բայց ձեռքով JSON տող ստեղծելը բավականին հոգնեցուցիչ է: Բացի այդ, դուք հաճախ պետք է վերցնեք JSON տող, փոխարկեք դրա բովանդակությունը փոփոխականի, որը կարող է օգտագործվել կոդում:
Ծրագրավորման լեզուներից շատերն ունեն գործիքներ՝ փոփոխականները JSON տողերի հեշտությամբ փոխարկելու համար և հակառակը:
Փոփոխականից JSON տողի ստեղծումJavaScript-ն ունի ներկառուցված JSON.stringify() մեթոդ, որը վերցնում է փոփոխական և վերադարձնում JSON տող, որը ներկայացնում է դրա բովանդակությունը: Օրինակ, եկեք ստեղծենք JavaScript օբյեկտ, որը պարունակում է մեր օրինակի պատվերի մասին տեղեկությունները, և դրանից հետո ստեղծենք JSON տող.
var cart = ( «պատվերի ID»: 12345, «shopperName»: «Վանյա Իվանով», «shopperEmail»: [էլփոստը պաշտպանված է]", "contents": [ ( "productID": 34, "productName": "Super product", "quantity": 1 ), ( "productID": 56, "productName": "Miracle product", "quantity": 3 ) ], "orderCompleted": true (JSON.stringify(cart));
Այս կոդը կստեղծի.
Նկատի ունեցեք, որ JSON.stringify() մեթոդը վերադարձնում է JSON տող առանց բացատների: Այն ավելի դժվար է կարդալ, բայց ավելի կոմպակտ է ցանցի միջոցով փոխանցելու համար:
JavaScript-ում JSON տողը վերլուծելու մի քանի եղանակ կա, բայց ամենաապահովն ու հուսալին ներկառուցված JSON.parse() մեթոդի օգտագործումն է: Այն ստանում է JSON տող և վերադարձնում JavaScript օբյեկտ կամ զանգված, որը պարունակում է տվյալներ: Օրինակ:
var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [էլփոստը պաշտպանված է]", \ "բովանդակություն": [ \ ( \ "productID": 34, \ "productName": "Super product", \ "quant": 1 \), \ ( \ "productID": 56, \ "productName": "Հրաշք ապրանքներ", \"քանակ"՝ 3\ ) \ ], \"պատվերը Ավարտված է"՝ ճշմարիտ \ ) \"; var cart = JSON.parse (jsonString); զգուշացում (cart.shopperEmail); զգուշացում (cart.contents.productName);
Մենք ստեղծեցինք jsonString փոփոխական, որը պարունակում է մեր օրինակի կարգի JSON տողը: Այնուհետև մենք փոխանցում ենք այս տողը JSON.parse() մեթոդին, որը ստեղծում է JSON տվյալներ պարունակող օբյեկտ և պահում այն զամբյուղի փոփոխականում: Մնում է միայն ստուգել՝ ցուցադրելով shopperEmail օբյեկտի հատկությունները և բովանդակության զանգվածի productName:
Արդյունքում մենք կստանանք հետևյալ արդյունքը.
Իրական հավելվածում ձեր JavaScript կոդը կստանա պատվերը որպես JSON տող AJAX պատասխանում սերվերի սկրիպտից, տողը կփոխանցի JSON.parse() մեթոդին և այնուհետև օգտագործի տվյալները՝ այն օգտագործողի էջում ցուցադրելու համար:
JSON.stringify()-ը և JSON.parse()-ն ունեն այլ հնարավորություններ, օրինակ՝ օգտագործելով հետադարձ կապի գործառույթները՝ որոշակի տվյալներ հատուկ փոխակերպելու համար: Նման տարբերակները շատ օգտակար են տարբեր տվյալներ ճիշտ JavaScript օբյեկտների փոխակերպելու համար:
PHP-ում JSON տողի հետ աշխատելըPHP-ն, ինչպես JavaScript-ը, ունի ներկառուցված գործառույթներ JSON տողերի հետ աշխատելու համար։
PHP փոփոխականից JSON տողի ստեղծումjson_encode() ֆունկցիան վերցնում է PHP փոփոխական և վերադարձնում JSON տող, որը ներկայացնում է փոփոխականի բովանդակությունը։ Ահա մեր պատվերի օրինակը՝ գրված PHP-ով.
Այս կոդը վերադարձնում է ճիշտ նույն JSON տողը, ինչ JavaScript-ի օրինակում.
(" orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [էլփոստը պաշտպանված է]","contents":[("productID":34,"productName":"Super product","quantity":1),("productID":56,"productName":"Miracle product","quantity": 3)]"պատվերն ավարտված է":true)
Իրական հավելվածում ձեր PHP սկրիպտը կուղարկի այս JSON տողը որպես AJAX պատասխանի մաս դիտարկիչին, որտեղ JavaScript կոդը, օգտագործելով JSON.parse() մեթոդը, այն նորից կվերլուծի փոփոխականի՝ օգտվողի էջում ցուցադրելու համար: .
Դուք կարող եք տարբեր դրոշներ փոխանցել որպես երկրորդ արգումենտ json_encode() ֆունկցիային: Նրանց օգնությամբ դուք կարող եք փոխել փոփոխականների բովանդակությունը JSON տողի կոդավորման սկզբունքները։
Ստեղծեք փոփոխական JSON տողիցJSON տողը PHP փոփոխականի փոխարկելու համար օգտագործեք json_decode() մեթոդը: Եկեք փոխարինենք JavaScript-ի մեր օրինակը JSON.parse() մեթոդով PHP կոդով.
Ինչպես JavaScript-ի դեպքում, այս կոդը կստեղծի.
[էլփոստը պաշտպանված է]Հրաշք արտադրանք
Լռելյայնորեն, json_decode() ֆունկցիան վերադարձնում է JSON օբյեկտները որպես PHP օբյեկտներ: Կան stdClass դասի ընդհանուր PHP օբյեկտներ։ Ահա թե ինչու մենք օգտագործում ենք -> վերը նշված օրինակում գտնվող օբյեկտի հատկություններին մուտք գործելու համար:
Եթե Ձեզ անհրաժեշտ է JSON օբյեկտ՝ որպես հարակից PHP զանգված, դուք պետք է փոխանցեք true որպես երկրորդ արգումենտ json_decode() ֆունկցիային: Օրինակ:
$cart = json_decode ($jsonString, true); echo $cart["shopperEmail"] . «
"; echo $cart["contents"]["productName"] ։
";
Այս կոդը կստեղծի նույն արդյունքը.
[էլփոստը պաշտպանված է]Հրաշք արտադրանք
Կարող եք նաև այլ արգումենտներ փոխանցել json_decode() ֆունկցիաին՝ նշելու ռեկուրսիայի խորությունը և մեծ ամբողջ թվերի հետ աշխատելու եղանակը:
ԵզրակացությունԹեև JSON-ը հեշտ է հասկանալ և օգտագործել, այն շատ օգտակար և ճկուն գործիք է հավելվածների և համակարգիչների միջև տվյալների փոխանցման համար, հատկապես AJAX-ի օգտագործման դեպքում: Եթե դուք նախատեսում եք մշակել AJAX հավելված, ապա կասկած չկա, որ JSON-ը կդառնա ձեր սեմինարի հիմնական գործիքը:
Ի՞նչ է JSON-ը և ի՞նչ կարող է դա անել: Այս հոդվածում դուք կսովորեք, թե ինչպես օգտագործել JSON-ը տվյալների հետ հեշտությամբ աշխատելու համար: Մենք նաև կդիտարկենք, թե ինչպես աշխատել JSON-ի հետ՝ օգտագործելով PHP և JavaScript:
Եթե դուք մշակել եք վեբ կայքեր կամ ընդհանրապես վեբ հավելվածներ, հավանական է, որ լսել եք JSON-ի մասին, համենայն դեպս: Բայց կոնկրետ ինչ է նշանակում JSON: Ի՞նչ կարող է անել այս տվյալների ձևաչափը և ինչպես կարող է այն օգտագործվել:
Այս հոդվածում մենք կսովորենք json ձևաչափի հետ աշխատելու հիմունքները: Հետևելու ենք հետևյալ թեմաներին.
- Ի՞նչ է JSON ձևաչափը:
- Ինչպե՞ս ստեղծել JSON տողեր:
- JSON տվյալների պարզ օրինակ
- Համեմատելով JSON-ը XML-ի հետ
Եկ սկսենք!
Ի՞նչ է JSON ձևաչափը:JSON-ը կառուցվածքային տվյալներ պահելու և փոխանցելու պարզ, տեքստի վրա հիմնված միջոց է: Պարզ շարահյուսությամբ դուք հեշտությամբ կարող եք պահել ինչպես պարզ թվեր և տողեր, այնպես էլ զանգվածներ և առարկաներ՝ օգտագործելով ոչ ավելին, քան տեքստը: Կարող եք նաև կապել օբյեկտները և զանգվածները, ինչը թույլ է տալիս ստեղծել տվյալների բարդ կառուցվածքներ:
Երբ JSON տողը ստեղծվի, այն հեշտությամբ կարող է ուղարկվել ցանկացած հավելված կամ համակարգիչ, քանի որ այն պարզապես տեքստ է:
JSON-ն ունի բազմաթիվ առավելություններ.
- Այն կոմպակտ է
- Այն ընթեռնելի է մարդու կողմից և հեշտ է կարդալ համակարգիչների կողմից
- Այն կարող է հեշտությամբ փոխակերպվել ծրագրային ձևաչափերի՝ թվային արժեքներ, տողեր, բուլյան ձևաչափ, զրոյական արժեք, զանգվածներ և ասոցիատիվ զանգվածներ:
- Գրեթե բոլոր ծրագրավորման լեզուներն ունեն գործառույթներ, որոնք թույլ են տալիս կարդալ և ստեղծել json տվյալների ձևաչափ:
Բառացիորեն JSON հապավումը նշանակում է JavaScript Object Notation: Ինչպես նկարագրվեց ավելի վաղ, այս ձևաչափը հիմնված է օբյեկտների ստեղծման վրա, որը նման է այլ ծրագրավորման լեզուների ասոցիատիվ զանգվածներին:
Ինչ նպատակների համար է օգտագործվում JSON-ը:Ամենից շատ json-ն օգտագործվում է javascript-ի և սերվերի կողմի (php) միջև տվյալների փոխանակման համար։ Այսինքն՝ ajax տեխնոլոգիայի համար։ Սա շատ հարմար է, երբ դուք փոխանցում եք բազմաթիվ փոփոխականներ կամ ամբողջական տվյալների զանգվածներ:
Ահա թե ինչ տեսք ունի այն օրինակում.
Այսպես է մեծացվում պատկերը՝ առանց էջը բրաուզերում վերաբեռնելու։ Սա շատ հարմար է, երբ մեզ անհրաժեշտ է մասնակի տվյալներ ստանալ, կամ փոքր քանակությամբ տեղեկատվություն փոխանցել սերվերին:
Բոլորի սիրելի jQuery-ն ունի getJSON() և parseJSON() ֆունկցիաները, որոնք օգնում են ձեզ աշխատել ձևաչափի հետ ajax հարցումների միջոցով:
Ինչպե՞ս ստեղծել JSON տողեր:Ստորև բերված են JSON տողերի ստեղծման հիմնական կանոնները.
- JSON տողը պարունակում է և՛ արժեքների զանգված, և՛ օբյեկտ (ասոցիատիվ զանգված՝ անուն/արժեք զույգերով):
- Զանգվածը պետք է փաթաթված լինի [ և ] քառակուսի փակագծերում և կարող է պարունակել արժեքների ցանկ, որոնք բաժանված են կոմայի մեջ:
- Օբյեկտները փաթաթված են գանգուր ձեռքերով, ( և ), ինչպես նաև պարունակում են կոմայի մեջ առանձնացված անուն/արժեք զույգեր:
- Անուն/արժեք զույգերը բաղկացած են դաշտի անունից (կրկնակի չակերտներով), որին հաջորդում է երկու կետ (:), որին հաջորդում է դաշտի արժեքը:
- Զանգվածի կամ օբյեկտի արժեքները կարող են լինել.
- Թվային (ամբողջական կամ կետավոր կոտորակ)
- Տողեր (կրկնակի չակերտներով փաթաթված)
- Բուլյան (ճիշտ կամ կեղծ)
- Այլ զանգվածներ (փաթաթված քառակուսի փակագծերում [ և ])
- Այլ առարկաներ (փաթաթված գանգուր ձեռքերով ( և ))
- Զուր արժեք
Կարևոր!
Եթե արժեքների մեջ օգտագործում եք կրկնակի չակերտներ, ապա դրանցից խուսափեք հետշեղով.JSON տվյալների պարզ օրինակ
Հետևյալ օրինակը ցույց է տալիս, թե ինչպես կարող եք տվյալները պահել առցանց խանութի «զամբյուղում»՝ օգտագործելով JSON ձևաչափը. [էլփոստը պաշտպանված է](«պատվերի ID»: 12345, «shopperName»: «John Smith», «shopperEmail»:
", "բովանդակություն". ], «պատվերն ավարտված է»: ճշմարիտ )
Բովանդակության զանգվածի ներսում մենք ունենք երկու օբյեկտ, որոնք ցուցադրում են զամբյուղի պարունակությունը: Յուրաքանչյուր ապրանքի օբյեկտ ունի երեք հատկություն՝ productID, productName, քանակ:
Վերջապես, քանի որ JSON-ը նույնական է JavaScript-ի օբյեկտներին, կարող եք հեշտությամբ վերցնել այս օրինակը և դրանից ստեղծել JavaScript օբյեկտ. [էլփոստը պաշտպանված է] var cart = («պատվերի ID»: 12345, «shopperName»: «John Smith», «shopperEmail»:
", "բովանդակություն". ], "orderCompleted": true );Համեմատելով JSON-ը XML-ի հետ
Թեև XML-ը փորձված և փորձարկված տեխնոլոգիա է, որն օգտագործվում է բազմաթիվ հավելվածների կողմից, JSON ձևաչափի առավելություններն այն են, որ այն ավելի կոմպակտ է և հեշտ գրելու և կարդալու համար:
Ահա վերը նշված JSON օրինակը, որը վերագրված է միայն XML ձևաչափով.
orderID 12345 գնորդի անունը Ջոն Սմիթ գնորդ Էլփոստ [էլփոստը պաշտպանված է]բովանդակություն productID 34 productName SuperWidget քանակություն 1 productID 56 productName WonderWidget քանակ 3 պատվեր Ավարտված է ճիշտ
Ինչպես տեսնում եք, այն մի քանի անգամ ավելի երկար է, քան JSON-ը։ Փաստորեն, այս օրինակը 1128 նիշ է, մինչդեռ JSON տարբերակը ընդամենը 323 նիշ է: XML տարբերակը նույնպես ավելի դժվար է կարդալ:
Բնականաբար, չի կարելի դատել միայն մեկ օրինակով, բայց նույնիսկ փոքր քանակությամբ տեղեկատվություն JSON ձևաչափում ավելի քիչ տեղ է զբաղեցնում, քան XML-ում:
Ինչպե՞ս աշխատել JSON-ի հետ PHP-ի և JS-ի միջոցով:Այժմ մենք հասնում ենք ամենահետաքրքիր մասին՝ JSON ձևաչափի գործնական կողմին: Նախ, եկեք հարգանքի տուրք մատուցենք JavaScript-ին, այնուհետև կտեսնենք, թե ինչպես կարող եք շահարկել JSON-ը PHP-ի միջոցով:
JSON ձևաչափի ստեղծում և ընթերցում՝ օգտագործելով JavaScriptՉնայած JSON ձևաչափը պարզ է, դժվար է ձեռքով գրել վեբ հավելվածներ մշակելիս: Ավելին, դուք հաճախ պետք է JSON տողերը փոխարկեք փոփոխականների և այնուհետև օգտագործեք դրանք ձեր կոդում:
Բարեբախտաբար, շատ ծրագրավորման լեզուներ ապահովում են JSON տողերի հետ աշխատելու գործիքներ: Որի հիմնական գաղափարը.
JSON տողեր ստեղծելու համար դուք սկսում եք որոշ արժեքներ պարունակող փոփոխականներից, այնուհետև դրանք փոխանցում եք ֆունկցիայի միջոցով, որը տվյալները վերածում է JSON տողի:
Ընթերցելով JSON տողերը՝ դուք սկսում եք JSON տողով, որը պարունակում է որոշակի տվյալներ, փոխանցում է տողը մի ֆունկցիայի միջով, որը ստեղծում է տվյալներ պարունակող փոփոխականներ:
Տեսնենք, թե ինչպես է դա արվում JavaScript-ում:
JavaScript փոփոխականից JSON տողի ստեղծումJavaScript-ն ունի ներկառուցված մեթոդ՝ JSON.stringify(), որը վերցնում է javascript փոփոխական և վերադարձնում է json տող, որը ներկայացնում է փոփոխականի բովանդակությունը։ Օրինակ, եկեք օգտագործենք նախկինում ստեղծված օբյեկտ և փոխարկենք այն JSON տողի:
Վերջապես, քանի որ JSON-ը նույնական է JavaScript-ի օբյեկտներին, կարող եք հեշտությամբ վերցնել այս օրինակը և դրանից ստեղծել JavaScript օբյեկտ. [էլփոստը պաշտպանված է]", "բովանդակություն". ], «orderCompleted»: true alert (JSON.stringify(cart));
Ահա թե ինչ կհայտնվի էկրանին.
(" orderID":12345,"shopperName":"John Smith","shopperEmail":" [էլփոստը պաշտպանված է]", "բովանդակություն":[("productID":34,"productName":"SuperWidget", "quantity":1), ("productID":56,"productName":"WonderWidget","քանակ":3) ], «պատվերն ավարտված է»:true)
Նկատի ունեցեք, որ JSON.stringify()-ը թողարկում է JSON տողեր առանց բացատների: Դժվար է կարդալ, բայց ավելի կոմպակտ է, ինչը կարևոր է տվյալներ ուղարկելիս:
JSON տողից JavaScript փոփոխականի ստեղծումJSON տողերը վերլուծելու մի քանի եղանակ կա, ամենաընդունելին և անվտանգը JSON.parse() մեթոդի օգտագործումն է: Այն վերցնում է JSON տող և վերադարձնում է JavaScript օբյեկտ կամ զանգված, որը պարունակում է JSON տվյալներ: Ահա մի օրինակ.
var jsonString = " \ ( \ "պատվերի ID": 12345, \ "shopperName": "John Smith", \ "shopperEmail": " [էլփոստը պաշտպանված է]", \ "բովանդակություն": [ \ ( \ "productID": 34, \ "productName": "SuperWidget", \ "quant": 1 \), \ ( \ "productID": 56, \ "productName": " WonderWidget", \ "քանակ"՝ 3 \ ) \ ], \ "պատվերը Ավարտված է"՝ ճշմարիտ \ ) \ "; var cart = JSON.parse (jsonString); զգուշացում (cart.shopperEmail); զգուշացում (cart.contents.productName);
Այստեղ մենք ստեղծեցինք փոփոխական՝ jsonString, որը պարունակում է JSON տողը նախկինում ներկայացված օրինակներից։ Այնուհետև մենք փոխանցեցինք այս տողը JSON.parse() միջով՝ JSON տվյալներ պարունակող օբյեկտ ստեղծելու համար, որը պահվում էր զամբյուղի փոփոխականում։ Ի վերջո, մենք ստուգում ենք տվյալների առկայությունը և ցուցադրում ենք որոշ տեղեկություններ՝ օգտագործելով ազդանշանային մոդալ պատուհանը:
Հետևյալ տեղեկատվությունը կցուցադրվի.
Իրական վեբ հավելվածում ձեր JavaScript կոդը պետք է ստանա JSON տող՝ որպես պատասխան սերվերից (AJAX հարցում ուղարկելուց հետո), այնուհետև վերլուծել տողը և ցուցադրել զամբյուղի բովանդակությունը օգտվողին:
PHP-ի միջոցով JSON ձևաչափի ստեղծում և ընթերցումPHP-ն, ինչպես JavaScript-ը, ունի գործառույթներ, որոնք թույլ են տալիս փոփոխականները փոխարկել JSON ձևաչափի և հակառակը: Եկեք նայենք նրանց:
PHP փոփոխականից JSON տողի ստեղծումJson_encode()-ը վերցնում է PHP փոփոխական և վերադարձնում JSON տող, որը ներկայացնում է փոփոխականի տվյալները: Ահա PHP-ով գրված «զամբյուղի» մեր օրինակը.
Այս կոդը արտադրում է ճիշտ նույն արդյունքը, ինչ JavaScript-ի օրինակը՝ վավեր JSON տող, որը ներկայացնում է փոփոխականների բովանդակությունը.
(" orderID":12345,"shopperName":"John Smith","shopperEmail":" [էլփոստը պաշտպանված է]""բովանդակություն":[("productID":34,"productName":"SuperWidget", "quantity":1),("productID":56,"productName":"WonderWidget","քանակ":3) ]"պատվերն ավարտված է":true)
Իրականում, ձեր PHP սկրիպտը պետք է ուղարկի JSON տող՝ որպես AJAX հարցման պատասխան, որտեղ JavaScript-ը կօգտագործի JSON.parse() տողը փոփոխականների վերածելու համար:
json_encode() ֆունկցիայի մեջ կարող եք նշել լրացուցիչ պարամետրեր, որոնք թույլ են տալիս որոշ նիշեր վերածել վեցանկյունի:
JSON տողից PHP փոփոխականի ստեղծումՎերոհիշյալի նման, կա json_decode() ֆունկցիա, որը թույլ է տալիս վերծանել JSON տողերը և բովանդակությունը տեղադրել փոփոխականների մեջ:
Ինչպես JavaScript-ի դեպքում, այս կոդը կարտադրի հետևյալը.
[էլփոստը պաշտպանված է] WonderWidget
Լռելյայնորեն, json_decode()-ը վերադարձնում է JSON օբյեկտները որպես PHP օբյեկտներ: Սովորական շարահյուսության նման, մենք օգտագործում ենք -> օբյեկտի հատկությունները մուտք գործելու համար:
Եթե հետագայում ցանկանում եք օգտագործել տվյալները որպես ասոցիատիվ զանգված, պարզապես փոխանցեք երկրորդ պարամետրը json_decode() ֆունկցիային: Ահա մի օրինակ.
$cart = json_decode ($jsonString, true); echo $cart["shopperEmail"] . «
"; echo $cart["contents"]["productName"] ։
";
Սա բերում է նույն արդյունքը.
[էլփոստը պաշտպանված է] WonderWidget
Դուք կարող եք նաև լրացուցիչ արգումենտներ փոխանցել json_decode() ֆունկցիային՝ որոշելու մեծ թվերի մշակումը և ռեկուրսիան։
Եզրափակելով JSON ձևաչափի մասինԵթե դուք պատրաստվում եք ստեղծել վեբ հավելված՝ օգտագործելով Ajax տեխնոլոգիան, դուք, անշուշտ, կօգտագործեք JSON ձևաչափը՝ սերվերի և բրաուզերի միջև տվյալների փոխանակման համար:
JSON-ը տվյալների ձայնագրման տեքստային ձևաչափ է: Այն թույլ է տալիս տեքստային ձևով ներկայացնել ինչպես մեկ թիվ կամ տող, այնպես էլ բարդ կառուցվածքներ, օրինակ՝ զանգվածներ տվյալների հետ: Ձայնագրման այս ձևաչափի օգտագործումը հարմար է, քանի որ այն ընթեռնելի և ինտուիտիվ է, միևնույն ժամանակ թույլ է տալիս պահպանել տվյալների շատ բարդ կառուցվածքներ: Բացի այդ, այն ավելի կոմպակտ է, քան xml-ը, ուստի, իմ կարծիքով, ավելի նախընտրելի է վեբ բրաուզերի և սերվերի միջև տվյալների փոխանակման համար։
JSON շարահյուսություն օրինակներովjson ձևաչափը սովորաբար գրվում է 2 տարբերակով.
1. Արժեքների հաջորդականություն. Օրինակ, 10, 15 հաջորդականությունը և «փորձարկումը» JSON ձևաչափով կունենա հետևյալ տեսքը.
2. Ձայնագրում բանալի ձևով՝ արժեքային զույգեր։ Օրինակ:
(«Լրիվ անուն»՝ «Իվանով Սերգեյ», «Ծննդյան ամսաթիվ»՝ «03/09/1975»)
Մի փոքր ավելի բարդ օրինակ.
(«Լրիվ անուն»՝ «Իվանով Սերգեյ», «Հասցե»՝ («Քաղաք»՝ «Մոսկվա», «Փողոց». «Պյատնիցկայա», «Տուն»՝ «35») )
PHP գործառույթներ JSON ձևաչափով աշխատելու համարPHP լեզվով 5.2 տարբերակից սկսած: կա ընդամենը 4 գործառույթ.
- json_decode - վերծանում է JSON տողը (տվյալներ է ստանում json ձևաչափի տողից)
- json_encode - Վերադարձնում է տվյալների JSON ներկայացում (տվյալները փոխակերպում է json տողի)
- json_last_error_msg - Վերադարձնում է տող, որը ցույց է տալիս վերջին զանգի սխալի հաղորդագրությունը json_encode() կամ json_decode()
- json_last_error - Վերադարձնում է վերջին սխալը
Հիմնականում, մեծ մասամբ, օգտագործվում է միայն երկու գործառույթ՝ json_encode և json_decode: Ես չեմ խորանա դրանց շարահյուսության մանրամասների մեջ, ավելի մանրամասն կարող եք նայել php.net-ին: Օգտագործման օրինակ.
$arr1 = զանգված (0,1,2); $json_str = json_encode ($arr1); echo $json_str; // դուրս կգա json տող՝ $arr2 = json_decode($json_str); արձագանք $arr2; // դուրս կգա՝ 1
Խնդրում ենք նկատի ունենալ. ռուսերեն տվյալները JSON ձևաչափով կոդավորելիս json_encode ֆունկցիան ռուսերեն նիշերը վերածում է Յունիկոդի, այսինքն. փոխարինում է դրանք \uXXXX-ով և այդպիսով json տողը դառնում է անընթեռնելի մարդկանց համար (բայց հասկանալի բրաուզերի համար): Եթե ցանկանում եք խուսափել Unicode-ի փոխարկումից (օրինակ՝ կոդը վրիպազերծելիս), կարող եք պարզապես օգտագործել JSON_UNESCAPED_UNICODE տարբերակը:
Նաև, որպեսզի կոդավորման ընթացքում չավելացվեն շեղերը, և որպեսզի թվերով տողերը կոդավորվեն որպես թվեր, կարող եք օգտագործել JSON_UNESCAPED_SLASHES և JSON_NUMERIC_CHECK: Արդյունքում, json տողը մարդու համար ընթեռնելի դարձնելու համար մենք կանենք, օրինակ, սա.
$arr = array ("fio" => "Իվանով Սերգեյ", "տարիքը" => "32", "vk_url" => "https://vk.com/id11111"); echo json_encode ($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
Առանց այս ընտրանքների օգտագործման տողը կլինի հետևյալը.
( "fio": "\u0418\u0432\u0430\u043d\u043e\u0432 \u0421\u0435\u0440\u0433\u0435\u0439", "տարիքը": "32", "vk_url" /vk.com\/id11111")
և օգտագործելով ընտրանքները, մենք ստանում ենք ընթեռնելի տող.
( «fio» : «Իվանով Սերգեյ», «տարիք» : 32, «vk_url» : «https://vk.com/id11111» )
Եվս մեկ կետ. եթե ցանկանում եք, որ json_decode ֆունկցիան վերադարձնի զանգված json տողը ապակոդավորելիս, պարզապես երկրորդ պարամետր ավելացրեք ֆունկցիային, որը հավասար է true-ին:
$json_str = "( "a":1, "b":2, "c":3 )"; $obj = json_decode ($json_str); // ստանալ օբյեկտի echo $obj->a; // դուրս կգա 1 $arr = json_decode ($json_str, true); // ստանալ ասոցիատիվ զանգված echo $arr["a"]; // կտպվի 1
Սա ավարտում է PHP գործառույթների իմ վերանայումը:
JavaScript գործառույթներ JSON ձևաչափով աշխատելու համարՍկսենք նրանից, որ JSON ձևաչափը ի սկզբանե ստեղծվել է JavaScript լեզվի համար, այնուհետև դարձել է պարզապես առանձին տեքստի ձևաչափ, որն օգտագործվում է տարբեր լեզուներով: Ըստ երևույթին, սա է պատճառը, որ JSON շարահյուսությունը շատ նման է սովորական առարկաներ և զանգվածներ գրելու շարահյուսությանը:
// JavaScript-ում զանգվածի օրինակ arr = ; զգուշացում (arr); // կցուցադրի 1 // JavaScript-ում օբյեկտի օրինակ obj = ( "name": "Vasya", "age": 35, "isAdmin": false ) alert(obj.name); // տպելու է «Վասյա»
JavaScript ֆունկցիաները, որոնք օգտագործվում են JSON ձևաչափից և դրանցից փոխարկելու համար.
- JSON.parse - JSON տողի վերծանում (տողը վերածելով օբյեկտների և/կամ զանգվածների)
- JSON.stringify - վերադարձնում է տվյալների JSON ներկայացում (օբյեկտները և/կամ զանգվածները վերափոխելով json տողի)
json տողի վերծանման պարզ օրինակ թվերով զանգվածի մեջ.
Str = ""; arr = JSON.parse(str); զգուշացում (arr); // կտպվի 1
Օբյեկտը JSON տողի վերածելու (սերիականացման) օրինակ.
Obj = ( «անունը»: «Վասյա», «տարիքը»: 35, «isAdmin»: false ) alert(JSON.stringify(obj)); // կցուցադրվի ("name":"Vasya", "age":35,"isAdmin":false)
Օբյեկտը սերիականացնելիս (վերափոխելիս) JSON տողի, կանչվում է այս օբյեկտի toJSON մեթոդը, եթե այն գոյություն ունի: Եթե մեթոդ չկա, ապա նշված են օբյեկտի բոլոր հատկությունները: ToJSON մեթոդով օբյեկտի փոխակերպման օրինակ.
Obj = ( «անունը»: «Վասյա», «տարիքը»: 35, «isAdmin»: false, toJSON: function() ( return this.age; ) ) alert(JSON.stringify(obj)); // տպելու է 35
JSON ձևաչափի գործնական կիրառման օրինակներԻրականում, ես անձամբ օգտագործում եմ JSON ձևաչափը 2 հիմնական իրավիճակներում.
1. Տվյալների փոխանցում բրաուզերի և սերվերի միջև Ajax հարցումների միջոցով:Օրինակ, մենք ունենք որոշ էջ, որտեղ մենք պետք է թարմացնենք տվյալները՝ առանց էջը վերաբեռնելու: Ենթադրենք, ձեզ անհրաժեշտ է տեղեկատվություն աշխատողների ցուցակով և նրանց տվյալները սերվերից «ներբեռնելու» համար:
JavaScript-ում, օգտագործելով jQuery, մենք այն պարզեցնում ենք և տվյալները զննարկիչում ցուցադրում ենք աղյուսակի տեսքով.
$.getJSON("get-info.php").success(function(data) ( // ajax հարցում, սերվերից տվյալները կգրվեն տվյալների փոփոխականում htmlstr = "