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 ბრაუზერიდან სერვერზე მონაცემების გასაგზავნად GET ან POST მოთხოვნებისთვის JSON სტრიქონის პარამეტრად გადაცემით. მაგრამ ეს მეთოდი ნაკლებად გავრცელებულია, რადგან მონაცემთა გადაცემა AJAX მოთხოვნის საშუალებით შეიძლება გამარტივდეს. მაგალითად, პროდუქტის ID შეიძლება იყოს URL-ში, როგორც GET მოთხოვნის ნაწილი.
jQuery ბიბლიოთეკას აქვს რამდენიმე მეთოდი, როგორიცაა getJSON() და parseJSON(), რაც აადვილებს JSON-ის გამოყენებით მონაცემთა მოძიებას AJAX მოთხოვნის მეშვეობით.
როგორ შევქმნათ JSON სტრიქონი?არსებობს რამდენიმე ძირითადი წესი JSON სტრიქონის შესაქმნელად:
- JSON სტრიქონი შეიცავს მნიშვნელობების მასივს ან ობიექტს (სახელის/მნიშვნელობის წყვილების ასოციაციურ მასივს).
- მასივიჩასმულია კვადრატულ ფრჩხილებში ([ და ]) და შეიცავს მძიმით გამოყოფილი მნიშვნელობების სიას.
- Საგანიჩასმულია ხვეული ფრჩხილებში (( და )) და შეიცავს სახელების/მნიშვნელობების წყვილების მძიმით გამოყოფილ სიას.
- სახელი/მნიშვნელობის წყვილიშედგება ორმაგი ბრჭყალებში ჩასმული ველის სახელისგან, რასაც მოჰყვება ორწერტილი (:) და ველის მნიშვნელობა.
- მნიშვნელობამასივში ან ობიექტში შეიძლება იყოს:
- რიცხვი (მთელი ან მცურავი წერტილი)
- სტრიქონი (ორმაგი ბრჭყალებით)
- ლოგიკური მნიშვნელობა (true ან false)
- კიდევ ერთი მასივი (ჩართულია კვადრატულ ფრჩხილებში)
- კიდევ ერთი ობიექტი (დახურული ხვეული ბრეკეტებით)
- ნულოვანი მნიშვნელობა
სტრიქონში ორმაგი ბრჭყალების ჩასართავად, თქვენ უნდა გამოიყენოთ უკანა ხაზი: \" . ისევე როგორც პროგრამირების ბევრ ენაში, შეგიძლიათ საკონტროლო სიმბოლოები და თექვსმეტობითი კოდები ჩასვათ სტრიქონში მათ წინ უკუშეჯახებით. იხილეთ 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" სტრიქონის მნიშვნელობით" [ელფოსტა დაცულია]" "contents": [... ] თვისება სახელად "contents", რომლის მნიშვნელობა არის მასივი "orderCompleted": true თვისება სახელად "orderCompleted" და ლოგიკური მნიშვნელობა true.
- "შინაარსი" მასივში არის 2 ობიექტი, რომელიც წარმოადგენს ცალკეულ ელემენტებს შეკვეთაში. თითოეული ობიექტი შეიცავს 3 თვისებას: productID , productName და რაოდენობა .
სხვათა შორის, რადგან JSON დაფუძნებულია JavaScript ობიექტების გამოცხადებაზე, შეგიძლიათ სწრაფად და მარტივად აქციოთ ზემოთ მოყვანილი JSON სტრიქონი JavaScript ობიექტად:
var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "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 სუპერ პროდუქტის რაოდენობა 1 productID 56 productName Miracle პროდუქტის რაოდენობა 3 შეკვეთა დასრულებული მართალია
XML ვერსია გაცილებით დიდია. სინამდვილეში ის 1128 სიმბოლოა, ხოლო JSON ვერსია მხოლოდ 323 სიმბოლოს შეადგენს. XML ვერსია ასევე საკმაოდ რთული გასაგებია.
რა თქმა უნდა, ეს რადიკალური მაგალითია. და შესაძლებელია უფრო კომპაქტური XML ჩანაწერის შექმნა. მაგრამ ისიც კი მნიშვნელოვნად გრძელი იქნება ვიდრე JSON ექვივალენტი.
JSON სტრიქონთან მუშაობა JavaScript-შიJSON-ს აქვს მარტივი ფორმატი, მაგრამ JSON სტრიქონის ხელით შექმნა საკმაოდ დამღლელია. გარდა ამისა, ხშირად გჭირდებათ JSON სტრიქონის აღება, მისი შიგთავსის გადაქცევა ცვლადად, რომელიც შეიძლება გამოყენებულ იქნას კოდში.
პროგრამირების ენების უმეტესობას აქვს ინსტრუმენტები ცვლადების JSON სტრიქონებში ადვილად გადასაყვანად და პირიქით.
JSON სტრიქონის შექმნა ცვლადიდანJavaScript-ს აქვს ჩაშენებული JSON.stringify() მეთოდი, რომელიც იღებს ცვლადს და აბრუნებს JSON სტრიქონს, რომელიც წარმოადგენს მის შინაარსს. მაგალითად, შევქმნათ JavaScript ობიექტი, რომელიც შეიცავს შეკვეთის ინფორმაციას ჩვენი მაგალითიდან და შემდეგ შევქმნათ JSON სტრიქონი მისგან:
var cart = ( "orderID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [ელფოსტა დაცულია]", "contents": [ ( "productID": 34, "productName": "Super product", "quantity": 1 ), ( "productID": 56, "productName": "Miracle product", "quantity": 3 ) ], "orderCompleted": true (JSON.stringify(cart));
ეს კოდი გამოიმუშავებს:
გაითვალისწინეთ, რომ JSON.stringify() მეთოდი აბრუნებს JSON სტრიქონს სივრცეების გარეშე. მისი წაკითხვა უფრო რთულია, მაგრამ უფრო კომპაქტურია ქსელში გადაცემისთვის.
არსებობს რამდენიმე გზა JSON სტრიქონის გასაანალიზებლად JavaScript-ში, მაგრამ ყველაზე უსაფრთხო და საიმედო არის ჩაშენებული JSON.parse() მეთოდის გამოყენება. ის იღებს JSON სტრიქონს და აბრუნებს JavaScript ობიექტს ან მასივს, რომელიც შეიცავს მონაცემებს. Მაგალითად:
var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "Vanya Ivanov", \ "shopperEmail": " [ელფოსტა დაცულია]", \ "შინაარსი": [ \ ( \ "productID": 34, \ "productName": "სუპერ პროდუქტი", \ "რაოდენობა": 1 \), \ ( \ "productID": 56, \ "productName": "სასწაული საქონელი", \" რაოდენობა": 3\ ) \ ], \"შეკვეთა დასრულებულია": მართალია \ ) \"; var cart = JSON.parse(jsonString); alert(cart.shopperEmail); alert(cart.contents.productName);
ჩვენ შევქმენით jsonString ცვლადი, რომელიც შეიცავს ჩვენი მაგალითის რიგის JSON სტრიქონს. შემდეგ ამ სტრიქონს გადავცემთ JSON.parse() მეთოდს, რომელიც ქმნის ობიექტს, რომელიც შეიცავს JSON მონაცემებს და ინახავს მას კალათის ცვლადში. რჩება მხოლოდ შემოწმება shopperEmail ობიექტის თვისებებისა და შიგთავსის მასივის productName-ის ჩვენებით.
შედეგად, ჩვენ მივიღებთ შემდეგ გამომავალს:
რეალურ აპლიკაციაში, თქვენი JavaScript კოდი მიიღებს შეკვეთას JSON სტრიქონის სახით AJAX პასუხში სერვერის სკრიპტიდან, გადასცემს სტრიქონს JSON.parse() მეთოდს და შემდეგ გამოიყენებს მონაცემებს მომხმარებლის გვერდზე გამოსატანად.
JSON.stringify() და JSON.parse() აქვთ სხვა შესაძლებლობები, როგორიცაა გამოძახების ფუნქციების გამოყენება გარკვეული მონაცემების პერსონალურად კონვერტაციისთვის. ასეთი ვარიანტები ძალიან სასარგებლოა სხვადასხვა მონაცემების სათანადო JavaScript ობიექტებად გადაქცევისთვის.
JSON სტრიქონთან მუშაობა PHP-შიPHP-ს, JavaScript-ის მსგავსად, აქვს ჩაშენებული ფუნქციები JSON სტრიქონებთან მუშაობისთვის.
JSON სტრიქონის შექმნა PHP ცვლადიდანjson_encode() ფუნქცია იღებს PHP ცვლადს და აბრუნებს JSON სტრიქონს, რომელიც წარმოადგენს ცვლადის შიგთავსს. აქ არის ჩვენი შეკვეთის მაგალითი, დაწერილი PHP-ში:
ეს კოდი აბრუნებს ზუსტად იგივე JSON სტრიქონს, როგორც JavaScript-ის მაგალითში:
("orderID":12345,"shopperName":"ვანია ივანოვი","shopperEmail":" [ელფოსტა დაცულია]""contents":[("productID":34,"productName":"სუპერ პროდუქტი", "რაოდენობა":1),("productID":56,"productName":"სასწაული პროდუქტი","რაოდენობა": 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 ფორმატის გამოყენებით:
("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [ელფოსტა დაცულია]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1 ), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "ბრძანება დასრულებულია": true )
მოდით დავყოთ ეს მონაცემები ნაწილ-ნაწილ:
დაბოლოს, რადგან JSON იდენტურია JavaScript-ის ობიექტებისა, შეგიძლიათ მარტივად აიღოთ ეს მაგალითი და შექმნათ JavaScript ობიექტი მისგან:
var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [ელფოსტა დაცულია]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1 ), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "ბრძანება დასრულებულია": true );
JSON-ის შედარება XML-თანუმეტეს შემთხვევაში, თქვენ იფიქრებთ JSON-ზე, როგორც XML-ის ალტერნატივად - ყოველ შემთხვევაში, ვებ აპლიკაციებში. Ajax კონცეფცია თავდაპირველად იყენებს XML-ს სერვერსა და ბრაუზერს შორის მონაცემების გასაცვლისთვის, მაგრამ ბოლო წლებში JSON უფრო პოპულარული გახდა ajax მონაცემების გადასაცემად.
მიუხედავად იმისა, რომ XML არის აპრობირებული ტექნოლოგია, რომელსაც მრავალი აპლიკაცია იყენებს, JSON ფორმატის უპირატესობა ის არის, რომ ის უფრო კომპაქტურია და ადვილია წერა-კითხვა.
აქ არის ზემოთ მოყვანილი JSON მაგალითი, რომელიც მხოლოდ XML ფორმატშია გადაწერილი:
orderID 12345 shopperName John Smith shopperEmail [ელფოსტა დაცულია]შინაარსი productID 34 productName SuperWidget რაოდენობა 1 productID 56 productName WonderWidget რაოდენობა 3 შეკვეთა დასრულებული true
როგორც ხედავთ, ის რამდენჯერმე გრძელია ვიდრე JSON. სინამდვილეში, ეს მაგალითი 1128 სიმბოლოა, ხოლო JSON ვერსია მხოლოდ 323 სიმბოლოს შეადგენს. XML ვერსია ასევე უფრო რთული წასაკითხია.
ბუნებრივია, არ შეიძლება ვიმსჯელოთ მხოლოდ ერთი მაგალითით, მაგრამ მცირე რაოდენობით ინფორმაციაც კი ნაკლებ ადგილს იკავებს JSON ფორმატში, ვიდრე XML-ში.
როგორ ვიმუშაოთ JSON-თან PHP-ით და JS-ით?ახლა მივედით ყველაზე საინტერესო ნაწილამდე - JSON ფორმატის პრაქტიკულ მხარეზე. ჯერ, მოდით, პატივი მივაგოთ JavaScript-ს, შემდეგ ვნახოთ, როგორ შეგიძლიათ JSON-ის მანიპულირება PHP-ის საშუალებით.
JSON ფორმატის შექმნა და კითხვა JavaScript-ის გამოყენებითმიუხედავად იმისა, რომ JSON ფორმატი მარტივია, ვებ აპლიკაციების შემუშავებისას ძნელია ხელით წერა. უფრო მეტიც, ხშირად გიწევთ JSON სტრიქონების ცვლადებად გადაქცევა და შემდეგ მათი გამოყენება თქვენს კოდში.
საბედნიეროდ, მრავალი პროგრამირების ენა გთავაზობთ ინსტრუმენტებს JSON სტრიქონებთან მუშაობისთვის. რომლის მთავარი იდეა:
JSON სტრიქონების შესაქმნელად, თქვენ იწყებთ ცვლადებით, რომლებიც შეიცავს გარკვეულ მნიშვნელობას, შემდეგ გადასცემთ მათ ფუნქციის მეშვეობით, რომელიც მონაცემებს აქცევს JSON სტრინგად.
JSON სტრიქონების კითხვას, იწყებთ JSON სტრიქონით, რომელიც შეიცავს გარკვეულ მონაცემებს, გადასცემთ სტრიქონს ფუნქციის მეშვეობით, რომელიც ქმნის მონაცემების შემცველ ცვლადებს.
ვნახოთ, როგორ კეთდება ეს JavaScript-ში.
JSON სტრიქონის შექმნა JavaScript ცვლადიდანJavaScript-ს აქვს ჩაშენებული მეთოდი JSON.stringify(), რომელიც იღებს javascript ცვლადს და აბრუნებს json სტრიქონს, რომელიც წარმოადგენს ცვლადის შიგთავსს. მაგალითად, გამოვიყენოთ ადრე შექმნილი ობიექტი და გადავიყვანოთ ის JSON სტრიქონად.
var cart = ("orderID": 12345, "shopperName": "John Smith", "shopperEmail": " [ელფოსტა დაცულია]", "contents": [ ( "productID": 34, "productName": "SuperWidget", "quantity": 1 ), ( "productID": 56, "productName": "WonderWidget", "quantity": 3 ) ], "orderCompleted": true (JSON.stringify(cart));
აი, რა გამოჩნდება ეკრანზე:
("orderID":12345,"shopperName":"John Smith","shopperEmail":" [ელფოსტა დაცულია]", "შინაარსი":[("productID":34,"productName":"SuperWidget","quantity":1), ("productID":56,"productName":"WonderWidget","quantity":3) ], "ბრძანება დასრულდა":true)
გაითვალისწინეთ, რომ JSON.stringify() გამოაქვს JSON სტრიქონები ინტერვალის გარეშე. ძნელი წასაკითხია, მაგრამ უფრო კომპაქტურია, რაც მნიშვნელოვანია მონაცემების გაგზავნისას.
JavaScript ცვლადის შექმნა JSON სტრიქონიდანJSON სტრიქონების გარჩევის რამდენიმე გზა არსებობს, ყველაზე მისაღები და უსაფრთხოა JSON.parse() მეთოდის გამოყენება. ის იღებს JSON სტრიქონს და აბრუნებს JavaScript ობიექტს ან მასივს, რომელიც შეიცავს JSON მონაცემებს. აი მაგალითი:
var jsonString = " \ ( \ "orderID": 12345, \ "shopperName": "John Smith", \ "shopperEmail": " [ელფოსტა დაცულია]", \ "contents": [ \ ( \ "productID": 34, \ "productName": "SuperWidget", \ "quantity": 1 \), \ ( \ "productID": 56, \ "productName": " WonderWidget", \"რაოდენობა": 3\ ) \ ], \"შეკვეთა დასრულებულია": true \ ) \"; var cart = JSON.parse(jsonString); alert(cart.shopperEmail); alert(cart.contents.productName);
აქ ჩვენ შევქმენით ცვლადი, jsonString, რომელიც შეიცავს JSON სტრიქონს ადრე მოწოდებული მაგალითებიდან. შემდეგ ჩვენ გადავიტანეთ ეს სტრიქონი JSON.parse()-ში, რათა შევქმნათ JSON მონაცემების შემცველი ობიექტი, რომელიც შენახული იყო კალათის ცვლადში. საბოლოოდ, ჩვენ ვამოწმებთ მონაცემთა ხელმისაწვდომობას და ვაჩვენებთ გარკვეულ ინფორმაციას გაფრთხილების მოდალური ფანჯრის გამოყენებით.
გამოჩნდება შემდეგი ინფორმაცია:
რეალურ ვებ აპლიკაციაში, თქვენს JavaScript-ის კოდმა უნდა მიიღოს JSON სტრიქონი, როგორც პასუხი სერვერისგან (AJAX მოთხოვნის გაგზავნის შემდეგ), შემდეგ გააანალიზოს სტრიქონი და აჩვენოს კალათის შიგთავსი მომხმარებელს.
JSON ფორმატის შექმნა და კითხვა PHP-ის გამოყენებითPHP-ს, JavaScript-ის მსგავსად, აქვს ფუნქციები, რომლებიც საშუალებას გაძლევთ გადაიყვანოთ ცვლადები JSON ფორმატში და პირიქით. მოდით შევხედოთ მათ.
JSON სტრიქონის შექმნა PHP ცვლადიდანJson_encode() იღებს PHP ცვლადს და აბრუნებს JSON სტრიქონს, რომელიც წარმოადგენს ცვლადის მონაცემებს. აქ არის ჩვენი მაგალითი PHP-ში დაწერილი „კალათისა“:
ეს კოდი აწარმოებს ზუსტად იგივე შედეგს, როგორც JavaScript-ის მაგალითი - მოქმედი JSON სტრიქონი, რომელიც წარმოადგენს ცვლადების შიგთავსს:
("orderID":12345,"shopperName":"John Smith","shopperEmail":" [ელფოსტა დაცულია]","contents":[("productID":34,"productName":"SuperWidget", "quantity":1),("productID":56,"productName":"WonderWidget","რაოდენობა":3) ]"შეკვეთა დასრულდა":true)
სინამდვილეში, თქვენმა PHP სკრიპტმა უნდა გამოაგზავნოს JSON სტრიქონი, როგორც პასუხი AJAX მოთხოვნაზე, სადაც JavaScript გამოიყენებს JSON.parse() სტრიქონს ცვლადებად გადაქცევისთვის.
json_encode() ფუნქციაში შეგიძლიათ მიუთითოთ დამატებითი პარამეტრები, რომლებიც საშუალებას გაძლევთ გადაიყვანოთ ზოგიერთი სიმბოლო ექვსკუთხედად.
PHP ცვლადის შექმნა JSON სტრიქონიდანზემოაღნიშნულის მსგავსად, არსებობს 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 სტრიქონი ადამიანისთვის წაუკითხავი ხდება (მაგრამ ბრაუზერისთვის გასაგები). თუ გსურთ თავიდან აიცილოთ უნიკოდზე კონვერტაცია (მაგალითად, კოდის გამართვისას), შეგიძლიათ უბრალოდ გამოიყენოთ JSON_UNESCAPED_UNICODE ვარიანტი.
ასევე, იმისათვის, რომ დაშიფვრისას არ დაემატოს დახრილი შტრიხები და ნომრებით სტრიქონები დაშიფრული იყოს რიცხვებად, შეგიძლიათ გამოიყენოთ JSON_UNESCAPED_SLASHES და JSON_NUMERIC_CHECK. შედეგად, იმისათვის, რომ json სტრიქონი ადამიანზე წასაკითხად გავხადოთ, ჩვენ გავაკეთებთ, მაგალითად, შემდეგს:
$arr = მასივი ("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", "http: "\s:\\" /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); alert(arr); // დაბეჭდავს 1
ობიექტის JSON სტრიქონში გადაყვანის (სერიალიზაციის) მაგალითი:
Obj = ( "სახელი": "ვასია", "ასაკი": 35, "isAdmin": false ) alert(JSON.stringify(obj)); // გამოჩნდება ("სახელი":"ვასია", "ასაკი":35,"isAdmin":false)
ობიექტის JSON სტრიქონში სერიული (კონვერტაციის) დროს, ამ ობიექტის toJSON მეთოდს ეძახიან, თუ ის არსებობს. თუ მეთოდი არ არსებობს, მაშინ ჩამოთვლილია ობიექტის ყველა თვისება. ობიექტის კონვერტაციის მაგალითი toJSON მეთოდით:
Obj = ( "სახელი": "ვასია", "ასაკი": 35, "isAdmin": false, toJSON: ფუნქცია() ( return this.age; ) ) alert(JSON.stringify(obj)); // დაბეჭდავს 35
JSON ფორმატის პრაქტიკული გამოყენების მაგალითებისინამდვილეში, მე პირადად ვიყენებ JSON ფორმატს 2 ძირითად სიტუაციაში:
1. მონაცემთა გადაცემა ბრაუზერსა და სერვერს შორის Ajax მოთხოვნის გამოყენებით.მაგალითად, ჩვენ გვაქვს გვერდი, რომელზედაც საჭიროა მონაცემების განახლება გვერდის გადატვირთვის გარეშე. ვთქვათ, გჭირდებათ ინფორმაცია თანამშრომლების სიით და მათი მონაცემების სერვერიდან "ჩამოტვირთვა".
JavaScript-ში, jQuery-ის გამოყენებით, ვამარტივებთ და მონაცემებს ბრაუზერში ცხრილის სახით ვაჩვენებთ:
$.getJSON("get-info.php").success(function(data) ( // ajax მოთხოვნა, სერვერიდან მონაცემები ჩაიწერება მონაცემთა ცვლადში htmlstr = "