Դուք, անշուշտ, երբևէ լսել եք 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 (JavaScript Object Notation) տվյալների փոխանակման պարզ ձևաչափ է, որը հեշտ է կարդալ և գրել ինչպես մարդկանց, այնպես էլ համակարգիչների կողմից: Այն հիմնված է JavaScript ծրագրավորման լեզվի ենթաբազմության վրա, որը սահմանված է ECMA-262 3rd Edition - December 1999 ստանդարտում: JSON-ը տեքստային ձևաչափ է, որը լիովին անկախ է իրականացման լեզվից, բայց այն օգտագործում է C-ի նման լեզուների ծրագրավորողներին ծանոթ պայմանագրեր, ինչպիսիք են C, C++, C#, Java, JavaScript, Perl, Python և շատ ուրիշներ: Այս հատկությունները JSON-ին դարձնում են տվյալների փոխանակման իդեալական լեզու:
JSON-ը հիմնված է տվյալների երկու կառուցվածքի վրա.
- Բանալի/արժեք զույգերի հավաքածու: Տարբեր լեզուներով այս հայեցակարգն իրականացվում է որպես առարկա, գրառում, կառուցվածք, բառարան, հեշ, անվանացուցակ կամ ասոցիատիվ զանգված։
- Արժեքների պատվիրված ցանկ: Լեզուների մեծ մասում սա իրականացվում է այսպես զանգված, վեկտոր, ցուցակ կամ հաջորդականություն:
Սրանք ունիվերսալ տվյալների կառուցվածքներ են: Գրեթե բոլոր ժամանակակից ծրագրավորման լեզուները որոշակի ձևով աջակցում են դրանք: Տրամաբանական է ենթադրել, որ ծրագրավորման լեզվից անկախ տվյալների ձևաչափը պետք է հիմնված լինի այս կառուցվածքների վրա։
JSON նշումով այն ունի հետևյալ տեսքը.
Օբյեկտ- բանալի/արժեք զույգերի չպատվիրված հավաքածու: Օբյեկտը սկսվում է ( բացվող գանգուր ամրացմամբ և ավարտվում է ) փակող գանգուր ամրացմամբ: Յուրաքանչյուր անվանը հաջորդում է՝ երկու կետ, ստորակետով բաժանված բանալին/արժեք զույգ:
Զանգված- պատվիրված արժեքների հավաքածու: Զանգվածը սկսվում է [ բաց քառակուսի փակագծով և ավարտվում ] փակվող քառակուսի փակագծով։ Արժեքները բաժանվում են ստորակետով:
ԻմաստըՄիգուցե տողկրկնակի չակերտներով, թիվ, ճշմարիտ , կեղծ , զրոյական , օբյեկտկամ զանգված. Այս կառույցները կարող են լինել բույն:
ԳիծՅունիկոդի զրոյական կամ ավելի նիշերի հավաքածու է, որը փակցված է կրկնակի չակերտների մեջ՝ օգտագործելով \ backslash-ը որպես փախուստի նշան: Նիշը ներկայացված է որպես մեկ նիշանոց տող: Նմանատիպ շարահյուսություն օգտագործվում է C-ում և Java-ում:
ԹիվԱյն ներկայացված է այնպես, ինչպես C-ում կամ Java-ում, բացառությամբ, որ օգտագործվում է միայն տասնորդական թվային համակարգը:
Բացատները կարող են օգտագործվել ցանկացած նշանի միջև:
Բացառելով որոշ կոդավորման մանրամասներ՝ վերը նշվածն ամբողջությամբ նկարագրում է լեզուն։
JavaScript Object Notation (JSON) ստանդարտ տեքստային ձևաչափ է՝ JavaScript օբյեկտի շարահյուսության վրա հիմնված կառուցվածքային տվյալներ ներկայացնելու համար: Այն սովորաբար օգտագործվում է վեբ հավելվածներում տվյալների փոխանցման համար (օրինակ՝ որոշ տվյալներ սերվերից հաճախորդին ուղարկելու համար, որպեսզի դրանք կարողանան ցուցադրվել վեբ էջում կամ հակառակը): Դուք բավականին հաճախ կհանդիպեք դրան, ուստի այս հոդվածում մենք ձեզ տալիս ենք այն ամենը, ինչ ձեզ անհրաժեշտ է JavaScript-ի միջոցով JSON-ի հետ աշխատելու համար, ներառյալ JSON-ի վերլուծությունը, որպեսզի կարողանաք մուտք գործել դրա ներսում գտնվող տվյալները և ստեղծել JSON:
Ոչ, իսկապես, ինչ է JSON-ը:Մենք պատրաստվում ենք բեռնել այն մեր էջ և օգտագործել որոշ կոկիկ DOM մանիպուլյացիա՝ այն մատուցելու համար, այսպես.
Ստացվում է JSONJSON-ը ստանալու համար մենք կօգտագործենք API, որը կոչվում է XMLHttpRequest (հաճախ կոչվում է XHR): Սա շատ օգտակար JavaScript օբյեկտ է, որը թույլ է տալիս մեզ կատարել ցանցային հարցումներ՝ JavaScript-ի միջոցով սերվերից ռեսուրսներ ստանալու համար (օրինակ՝ պատկերներ, տեքստ, JSON, նույնիսկ HTML հատվածներ), ինչը նշանակում է, որ մենք կարող ենք թարմացնել բովանդակության փոքր հատվածները՝ առանց ամբողջ էջը վերաբեռնելու: . Սա հանգեցրել է ավելի պատասխանատու վեբ էջերի և հուզիչ է թվում, բայց, ցավոք, այս հոդվածի շրջանակներից դուրս է այն շատ ավելի մանրամասն սովորեցնելը:
Սա պահանջում է առնվազն երկու պարամետր. կան այլ պարամետրեր: Այս պարզ օրինակի համար մեզ անհրաժեշտ է ընդամենը երկուսը.
- Ցանցային հարցում կատարելիս օգտագործելու HTTP մեթոդը: Այս դեպքը լավ է, քանի որ մենք պարզապես մի քանի պարզ տվյալներ ենք առբերում:
- Հարցման URL-ը JSON ֆայլի URL-ն է, որը մենք նախկինում պահել ենք:
Այստեղ մենք պահում ենք մեր հարցման պատասխանը (հասանելի է սեփականության մեջ) superHeroes փոփոխականում; այս փոփոխականն այժմ կպարունակի JSON-ի վրա հիմնված JavaScript օբյեկտ: Այնուհետև մենք փոխանցում ենք այս օբյեկտը երկու ֆունկցիայի կանչի. առաջինը այն կհամալրի ճիշտ տվյալներով, իսկ երկրորդը կստեղծի տեղեկատվական քարտ թիմի յուրաքանչյուր հերոսի համար և կտեղադրի այն:
Մենք ծածկել ենք կոդը իրադարձությունների մշակման մեջ, որը գործարկվում է, երբ բեռնման իրադարձությունը գործարկվում է հարցման օբյեկտի վրա (տես) - սա պայմանավորված է նրանով, որ բեռնման իրադարձությունը գործարկվում է, երբ պատասխանը հաջողությամբ վերադարձվում է. այսպես անելը երաշխավորում է, որ request.response-ն անպայման հասանելի կլինի, երբ մենք փորձենք ինչ-որ բան անել դրա դեմ:
Վերնագրի լրացումԱյժմ մենք հանել ենք JSON-ի տվյալները և այն վերածել JavaScript-ի օբյեկտի, եկեք օգտագործենք դրանք՝ գրելով վերևում մեր կապած երկու ֆունկցիաները: Նախ, նախորդ կոդի տակ ավելացրեք հետևյալ գործառույթի սահմանումը.
populateHeader(jsonObj) ( var myH1 = document.createElement ("h1"); myH1.textContent = jsonObj["squadName"]; header.appendChild(myH1); var myPara = document.createElement ("p"); myPara: textContent = "Հայտնի քաղաք. " + jsonObj["homeTown"] + " // Ձևավորվել է՝ " + jsonObj["formed"];
Մենք պարամետրը անվանեցինք jsonObj՝ հիշեցնելու, որ այս JavaScript օբյեկտը ծագել է JSON-ից: Այստեղ մենք նախ ստեղծում ենք տարր -ով, այն հավասարեցնում ենք օբյեկտի squadName հատկությանը, այնուհետև այն ավելացնում ենք վերնագրի մեջ: Այնուհետև մենք կատարում ենք շատ նմանատիպ գործողություն պարբերության հետ. մենք ստեղծում ենք այն, սահմանում ենք դրա տեքստի բովանդակությունը և այն ավելացնում վերնագրում: Միակ տարբերությունն այն է, որ դրա տեքստը նշված է որպես միացված տող, որը պարունակում է օբյեկտի և՛ homeTown, և՛ ձևավորված հատկությունները:
Հերոսի տեղեկատվական քարտերի ստեղծումԱյնուհետև ավելացրեք հետևյալ գործառույթը կոդի ներքևում, որը ստեղծում և ցուցադրում է սուպերհերոսի քարտերը.
ShowHeroes(jsonObj) ֆունկցիան ( var heroes = jsonObj[«անդամներ»]; համար (var i = 0; i< heroes.length; i++) { var myArticle = document.createElement("article"); var myH2 = document.createElement("h2"); var myPara1 = document.createElement("p"); var myPara2 = document.createElement("p"); var myPara3 = document.createElement("p"); var myList = document.createElement("ul"); myH2.textContent = heroes[i].name; myPara1.textContent = "Secret identity: " + heroes[i].secretIdentity; myPara2.textContent = "Age: " + heroes[i].age; myPara3.textContent = "Superpowers:"; var superPowers = heroes[i].powers; for (var j = 0; j < superPowers.length; j++) { var listItem = document.createElement("li"); listItem.textContent = superPowers[j]; myList.appendChild(listItem); } myArticle.appendChild(myH2); myArticle.appendChild(myPara1); myArticle.appendChild(myPara2); myArticle.appendChild(myPara3); myArticle.appendChild(myList); section.appendChild(myArticle); } }
Նախ, եկեք JavaScript օբյեկտի անդամների հատկությունը պահենք նոր փոփոխականում: Այս զանգվածը պարունակում է մի քանի օբյեկտներ, որոնք պարունակում են տեղեկատվություն յուրաքանչյուր հերոսի համար:
Այնուհետև մենք օգտագործում ենք զանգվածի յուրաքանչյուր օբյեկտի միջով անցում կատարելու համար: Նրանցից յուրաքանչյուրի համար մենք.
ԵՎ
- .
- (myList) օգտագործելով appendChild() .
ԵՎ
- ներսում (myArticle) և այնուհետև ավելացրեք այն . Կարևոր է իրերի ավելացման հերթականությունը, քանի որ դրանք HTML-ում հայտնվելու կարգն են:
Նշում: Եթե դուք դժվարանում եք հետևել կետի/փակագծին, որը մենք օգտագործում ենք JavaScript-ի օբյեկտ մուտք գործելու համար, դա կարող է օգնել բացել superheroes.json ֆայլը մեկ այլ ներդիրում կամ տեքստային խմբագրիչում և անդրադառնալ դրան, երբ դիտեք մեր JavaScript-ը: Կետերի և փակագծերի նշումների մասին լրացուցիչ տեղեկությունների համար կարող եք նաև անդրադառնալ մեր հոդվածին:
Փոխակերպում առարկաների և տեքստի միջևՎերոհիշյալ օրինակը պարզ էր JavaScript օբյեկտ մուտք գործելու առումով, քանի որ մենք նշել ենք XHR հարցում՝ JSON պատասխանն ուղղակիորեն JavaScript օբյեկտի փոխակերպելու համար՝ օգտագործելով .
Այս հոդվածում ես ուզում եմ խոսել տեքստային տվյալների փոխանակման ձևաչափի մասին՝ JSON, և մասնավորապես PHP-ում այս ձևաչափով աշխատելու մասին։
JSON-ը տեքստային տվյալների կոմպակտ ձևաչափ է: Այն կարող է օգտագործվել ինչպես ինտերնետ տվյալների փոխանցման ծառայություններում, այնպես էլ տեղեկատվությունը կառուցվածքային ձևով պահելու համար:
JSON ( Անգլերեն JavaScript օբյեկտի նշում) տեքստի վրա հիմնված տվյալների փոխանակման ձևաչափ է՝ հիմնված JavaScript-ի վրա և սովորաբար օգտագործվում է այս լեզվով: Ինչպես շատ այլ տեքստային ձևաչափեր, JSON-ը հեշտ է կարդալ մարդկանց կողմից:
Չնայած իր ծագմանը JavaScript-ից (ավելի ճիշտ՝ 1999 թվականի ECMA-262 ստանդարտի լեզվի ենթաբազմությունից), ձևաչափը համարվում է անկախ լեզվից և կարող է օգտագործվել գրեթե ցանկացած ծրագրավորման լեզվով: Շատ լեզուների համար կա JSON ձևաչափով տվյալների ստեղծման և մշակման պատրաստի կոդ:
JSON-ի օգտագործման գործնական օգուտները բացահայտվում են AJAX տեխնոլոգիան օգտագործելիս: JSON ձևաչափն ավելի հակիրճ և ընթեռնելի է, քան XML-ը և բնիկ է Javascript-ի համար: Բացի այդ, JSON կոդի մեջ հնարավոր է տեղադրել լիովին ֆունկցիոնալ գործառույթներ:
Այո, հենց AJAX տեխնոլոգիայի մեջ է, իմ կարծիքով, դրա հիմնական կիրառությունն է։ Քանի որ AJAX տեխնոլոգիան ներառում է հաճախորդի հարցումը սերվերին ուղարկելը: Հաջորդը, հարցումը մշակվում է սերվերի վրա, և արդյունքը ուղարկվում է ի պատասխան հաճախորդին:
Տվյալների տեսակը JSON ձևաչափովJSON-ն աջակցում է տվյալների բոլոր հիմնական ձևաչափերին՝ տողեր, թվեր, բուլյաններ, ինչպես նաև զանգվածներ և առարկաներ (բանալին:արժեք համակցություններ, որոնք բաժանված են ստորակետերով և փակված գանգուր փակագծերով):
Ահա JSON ձևաչափով տվյալների ներկայացման օրինակ.
(«id»։
Տեսնենք, թե ինչ կարող է փոխանցել այս տողը. «ivan» անունով անձը, «1» նույնացուցիչի տակ, որը բնակվում է «Ռուսաստանում» երկրում, աշխատում է «yandex» ընկերությունում՝ «կառավարման» բաժնում:
Բերենք ևս մեկ օրինակ. Կայքն ունի AJAX տեխնոլոգիայի օգտագործմամբ հետադարձ կապի ձև: Այցելուն լրացնում է տեղեկատվությունը, այնուհետև այն ուղարկվում է սերվեր՝ ստուգման համար, եթե սխալներ չեն հայտնաբերվել, տեղեկատվությունը պահվում է տվյալների բազայում և ուղարկվում է պատասխան՝ նշելով հաջող պահպանումը. Բայց եթե սխալներ են հայտնաբերվել, պատասխան է վերադարձվում սխալի տեսակներով:
Սխալի պատասխանի օրինակ JSON ձևաչափով.
("սխալ":"1", "սխալի կոդը":["empty_pers", "empty_mail", "empty_phone", "empty_letter", "empty_scode"])
Ինչը, օրինակ, նշանակում է.
- Դուք պետք է լրացնեք «Կոնտակտային անձ» դաշտը
- Դուք պետք է լրացնեք «E-mail» դաշտը
- Դուք պետք է լրացնեք «Հեռախոս» դաշտը
- Մուտքագրեք հաղորդագրության տեքստը
- Անհրաժեշտ է լրացնել «Թիվը նկարում» դաշտը.
Եթե սխալներ չկան, պատասխանը վերադարձվում է.
(«սխալ»: «0»)
Ինչը ցույց է տալիս տվյալների հաջող ուղարկումը:
PHP-ում JSON ընդլայնումն օգտագործվում է JSON ձևաչափով տվյալները ներկայացնելու համար: 5.2.0-ից ավելի հին PHP տարբերակներում JSON-ի աջակցությունը ներկառուցված է ավելի վաղ տարբերակներում, դուք պետք է ձեր սկրիպտում ներառեք գործառույթներով լրացուցիչ ֆայլ:
Այսպիսով, PHP-ում JSON ձևաչափով տվյալների հետ աշխատելու համար պատասխանատու են երկու գործառույթ՝ json_encode() և json_decode():
Տվյալների փոխակերպում JSON ձևաչափի $json_data = զանգված ("id"=>1,"name"=>"ivan", "country"=>"Russia", "office"=>array("yandex","management") ); echo json_encode ($json_data); JSON ձևաչափից տվյալների հակադարձ փոխարկում $json_string="("id":1,"name":"ivan","country":"Russia","office":["yandex","management"]) "; $obj=json_decode ($json_string);Այժմ $obj-ը կպարունակի JSON տվյալներ՝ թարգմանված PHP օբյեկտի մեջ, որը կարող եք մուտք գործել հետևյալ կերպ.
Echo $obj->name; //Ցուցադրում է անունը ivan echo $obj->office; //Ցուցադրել yandex ընկերությունը
Ինչպես տեսնում եք, $obj->office-ը զանգված է:
Foreach ($obj->office as $val) echo $val;
JSON-ի հետ աշխատելը թույլ է տալիս տվյալների փոխանակում սերվերի հետ «մաքուր ձև». Կարիք չկա ուղարկել HTML կոդի ծավալուն կտորներ:
JSON ձևաչափի հետ աշխատելու համար JavaScript-ն ունի գլոբալ JSON օբյեկտ: JSON օբյեկտն ունի երկու մեթոդ՝ stringify() և parse(): Բացի այս երկու մեթոդներից, այն չի պարունակում որևէ լրացուցիչ ֆունկցիոնալություն:
stringify() մեթոդըStringify() մեթոդը փոխակերպում է JavaScript-ի արժեքը JSON տողի:
Փոխակերպման առանձնահատկությունները.
- Փոխակերպման ժամանակ հանդիպող չսահմանված արժեքը, ֆունկցիան կամ խորհրդանիշը կամ կբացակայվի (եթե գտնվի օբյեկտում), կամ կվերածվի զրոյականի (եթե հայտնաբերվել է զանգվածում):
- Նախատիպի անդամները և չհամարվող հատկությունները անտեսվում են:
- Զանգվածը սահմանում է օբյեկտի հատկությունների մի շարք, որոնք կներառվեն JSON տողում: Զանգվածի արժեքները տողեր են, որոնք համապատասխանում են փոխակերպվող օբյեկտի հատկությունների անուններին:
- Ֆունկցիան թույլ է տալիս փոխարինել օբյեկտի հատկությունների արժեքները JSON տողում: Ֆունկցիան պետք է պարունակի երկու պարամետր՝ գույքի անվանումը և գույքի արժեքը: Գույքի անվանումը տող է: Ֆունկցիան պետք է վերադարձնի գույքի նոր արժեքը:
- Եթե պարամետրի արժեքը null է, ապա JSON տողը կներառի օբյեկտի բոլոր հատկությունները:
- Թիվը ցույց է տալիս յուրաքանչյուր բույնի մակարդակի համար օգտագործվող բացատների քանակը: Բնադրման յուրաքանչյուր հաջորդ մակարդակը լրացվում է նոր անցքերով: Օրինակ, եթե թիվ 2-ն օգտագործվում է որպես պարամետրի արժեք, ապա առաջին բնադրման մակարդակում նահանջը կլինի երկու բացատ, հաջորդ բնադրման մակարդակում նահանջը կլինի 4 բացատ և այլն: Բացատների առավելագույն քանակը, որը կարելի է նշել: 10-ն է: Եթե նշեք ավելի մեծ թիվ, այն ինքնաբերաբար կնվազի մինչև 10:
- Տողում նշվում է բնադրման յուրաքանչյուր մակարդակի համար օգտագործվող նիշը: Տողի երկարությունը սահմանափակվում է 10 նիշով. Տող օգտագործելը նաև թույլ է տալիս օգտագործել ներդիրը («\t») որպես ներքև: Բնադրման յուրաքանչյուր հաջորդ մակարդակը լրացվում է ներքևման նոր նիշերով: Օրինակ, եթե - (գծիկ) նշանը նշված է որպես պարամետրի արժեք, ապա առաջին տեղակայման մակարդակում մեկ գծիկ կօգտագործվի որպես նահանջ, հաջորդ բույնի մակարդակում՝ 2 գծիկ և այլն։
JSON տող.
Օրինակ let person = ( անուն՝ «Գոմեր», տարիք՝ 40, աշխատանք՝ ( տեղ՝ «Ատոմակայան», գտնվելու վայրը՝ «Springfield» ) ) // Օրինակ մեկ պարամետրով console.log(JSON.stringify(person)); // "("անուն":"Հոմեր","տարիք":40,"աշխատանք":("տեղ":"Ատոմային կայան","տեղակայում":"Springfield"))" // Օրինակ երկու պարամետրով (զանգված ) console.log (JSON.stringify (անձ, ["անուն", "տարիքը"])); // "("անուն":"Գոմեր","տարիք":40)" // Օրինակ երկու պարամետրով (ֆունկցիա) console.log(JSON.stringify(անձ, ֆունկցիա (բանալին, արժեք) (փոխանջատիչ (բանալին) ) (գործը «անուն»՝ վերադարձ «Բարտ», գործ «տարիքը»՝ վերադարձ 10; դեպք «աշխատանք»՝ վերադարձ չսահմանված; // "("name":"Bart",""age":10)" // Օրինակ երեք պարամետրերով console.log(JSON.stringify(person, null, 2)); /* ( * «անուն»՝ «Հոմեր», * «տարիք»՝ 40, * «աշխատանք»: ( * «տեղ»՝ «Ատոմային կայան», * «գտնվելու վայրը»: «Սփրինգֆիլդ» * ) * ) */ Մեթոդ. վերլուծել ()Parse() մեթոդը փոխակերպում է JSON տողը համապատասխան JavaScript արժեքի։
Փոխակերպման առանձնահատկությունները.
- Եթե փոխակերպման ժամանակ JSON տողում չսահմանված արժեք հայտնաբերվի, այն կբացակայվի (արդյունքում ներառված չէ):
Համապատասխան JavaScript արժեքը (պարզունակ արժեք, օբյեկտ կամ զանգված):
Օրինակ JSON.parse("()"); // () JSON.parse ("true"); // true JSON.parse(""); // JSON.parse ("null"); // դատարկ