پىروگىرامما ساھەسىدە JSON دىن ئىبارەت، تەرتىپلەشتۈرۈلگەن سانلىق مەلۇمات بىر تەرەپ قىلىش تېخنىكىسىنى ئايىماي ئىشلىتىپ كېلىۋاتىمىز. تۆۋەندە پىقىرنىڭ بۇنى چوڭقۇرلاپ ئۆگېنىش جەريانىدىكى ئاددىي خاتىرىلىرى يىغىنچاقلاپ تەييارلاندى.
JSON - تولۇق ئىسمى JavaScript Object Notation (يەنى JavaScript ئوبىكتلارنى ئىپادىلەش ئۇسسۇلى). ئۇ JavaScript نىڭ ئوبىكتلارنى ئىپادىلەشىگە ئوخشاش ئۇسسۇلدا مەلۇمات(数据) لارنى ئىپادىلىيەلەيدۇ. گەرچە JSON نىڭ پەيدا بولۇشى JavaScript بىلەن زىچ مۇناسىۋەتلىك بولسىمۇ، بىراق JSON نى يەنىلا JavaScript نىڭ بىر قىسمى دېيىشكە بولمايدۇ. چۈنكى، نۇرغۇنلىغان پىروگىرامما تىللىرى JSON نى يېشىش(解析) ۋە تەرتىپلەشتۈرۈش (序列化) مەشغۇلاتىنى قوللايدۇ، شۇنداقلا ئۇ ئايرىم بىر تېخنىكا سۈپىتىدە ھەرقايسى ساھەلەردە كەڭ قوللىنىلىدۇ.
JSON نىڭ گىرامماتىكىسى
JSON تۆۋەندىكى ئۈچ تېپتىكى قىممەتلەرنى ئىپادىلىيەلەيدۇ:
- ئاددى قىممەتلەر
- ئوبىكتلار
- سان گۇرۇپپىلىرى
ئاددى قىممەتلەر - ھەرپ زەنجىرى، سانلار، ھۆكۈم قىممەتلىرى (布尔类型) ۋە Null نى ئۆز ئىچىگە ئالىدۇ. لېكىن JSON ئادەتتە JavaScript تىكى بىر ئالاھىدە قىممەت undefinde نى قوللاپ بېرەلمەيدۇ.
ئوبىكتلار - خۇددى JavaScript نىڭ ئوبىكىتلىرىغا ئوخشىشىپ كېتىدۇ. يەنى تەرتىپلەشتۈرۈلمىگەن ئاچقۇچ - قىممەت (Key-Vlaue) گۇرۇپپىلىرىنى كۆرسېتىدۇ. ئاچقۇچ - قىممەت گۇرۇپپىلىرىدىكى قىممەت ئاددى قىممەت بولسىمۇ، ئوبىكت ياكى مىقدار گۇرۇپپىسى بولسىمۇ بولىدۇ.
سان گۇرۇپپىلىرى - JavaScript نىڭ سان گۇرۇپپىلىرى بىلەن ئوخشاش بولغان، بىر گۇرۇپپا تەرتىپلىك قىممەتلەردىن ئىبارەت. سان گۇرۇپپىلىرى ئادەتتە ئاددى قىممەت ، ئوبىكىت ياكى سان گۇرۇپپىلىرىدىن تۈزۈلگەن بولسا بولىدۇ.
مىسال:
{ "name": "Teshna", "age": 24, "address": { "province": "BeiJing", "city": "BeiJing" }, "friends": ["bc", "cc", "dc"], "blog": "" }
دېققەت قىلىشقا تېگىشلىكى، شۇنداقلا JavaScript دا ئوبىكتلارنى ئىپادىلەشكە ئوخشىمايدىغان بىر يىرى JSON ھەرپ زەنجىرىدىكى ئوبىكتلار خاسلىقلىرىنى چوقۇم قوش تىرناق ئىچىگە ئېلىش كېرەك. يەنى:
// توغرا بولغان ئۇسسۇل { "name": "acwong" } // خاتا ئۇسسۇل { name: "acwong" } // يالاڭ تىرناقمۇ خاتا { 'name': 'acwong' }
JSON ئوبىكتى ۋە JavaScript
JSON دەسلىپىدە بارلىققا كەلگەن مەزگىللەردە، JavaScript ئارقىلىق JSON نى بىر تەرەپ قىلشتا ئاساسلىقى eval()
فۇنكىسىيەسى ئىشلىتىلەتتى. eval()
فۇنكىسىيەسى JSON مەلۇماتلىرىنى يەشكەندىن كېيىن JavaScript سان گۇرۇپپىلىرى شەكلىدە قايتۇراتتى. بىراق eval()
نى ئىشلەتكەندە تازا بىخەتەر بولمىغايچقا ، EMCAScript 5 دىن باشلاپ، JavaScript قا پۈتۈنلەي يېڭىدىن مەخسۇس JSON ئوبىكتى قوشۇلدى.
JSON نى تەرتىپلەش(序列化)
JavaScript دە ئادەتتە JSON ئوبىكتىنىڭ stringify()
ئۇسسۇلى ئارقىلىق JSON نى تەرتىپلەشتۈرىمىز. مەسىلەن:
var person = { name: "Teshna", age: 24, address: { province: "BeiJinf", city: "BeiJing" }, friends: ["bc", "cc", "dc"], blog: "" }; var jsonText = JSON.stringify(person); console.log(jsonText); // {"name":"Teshna","age":24,"address":{"province":"BeiJing","city":"BeiJing"},"friends":["bc","cc","dc"],"blog":""}
JSON.stringify()
سۈكۈتتىكى ھالەتتە قايتۇرىدىغان JSON ھەرپ زەنجىرى بوش ئورۇن ياكى ئالدىغا سۈرۈش بەلگىلىرىنى ئۆز ئىچىگە ئالمايدۇ.
ئەگەر JavaScript ئوبىكتلىرىدا JSON قوللىمايدىغان شەكىللەر بولسا(مەسىلەن: undefined فۇنكىسىيەسى) stringigy()
ئۇسسۇلى تەرىپىدىن ئاپتوماتىك سۈزۈۋىتىلىدۇ. مەسىلەن:
var person = { name: "teshna", blog: undefined, todo: function() { return "sleep"; } }; var jsonText = JSON.stringify(person); console.log(jsonText); // {"name":"teshna"}
JSON.stringify()
ئۇسسۇلىنىڭ ئۈچ پارامىتىرى بار بولۇپ: بىرىنچىسى، تەرتىپلەشتۈرۈلىدىغان JavaScript ئوبىكتى؛ ئىككىنچىسى بەزى مەلۇماتلارنى سۈزۈۋىتىش ئىقتىدارى تەمىنلەيدىغان پارامىتىر؛ ئۈچىنچىسى بولسا، قايتۇرىدىغان ھەرپ زەنجىرىنى ئالدىغا سۈرۈش ئىقتىدارى تەمىنلەيدىغان پارامىتىر.
قايتۇرىدىغان نەتىجىلەردىن بەزى مەلۇماتلارنى سۈزۈۋىتىپ كۆرسېتىش
يۇقىرىدا دېگىنىمىزدەك، ئىككىنچى پارامىتىر دەل سۈزگۈچلۈك رولىنى ئۆتەيدۇ. ئىككىنچى پارامىتىرغا بەلگىلەنگىنى سان گۇرۇپپىسى بولغىنىدا، قايتۇرۇلۇدىغان JSON ھەرپ زەنجىرىدە پەقەت موشۇ سان گۇرۇپپىسىدا بەلگىلەنگەن خاسلىقلارلا كۆرسىتىلىدۇ. مەسىلەن:
var person = { name: "teshna", age: 24, address: { province: "BeiJing", city: "BeiJing" }, friends: ["bc", "cc", "dc"], blog: "" }; var jsonText = JSON.stringify(person, ["name","blog"]); console.log(jsonText); // {"name":"teshna","blog":""}
ئىككىنچى پارامىتىرغا بەلگىلەنگىنى بىر فونكىسىيە بولسا، يەنە كېلىپ فۇنكىسىيەنىڭ ئىككى پارامىتىرى بار بولسا، يەنى JavaScript ئوبىكتلىرىنىڭ خاسلىق نامى ۋە قىممىتىدىن ئىبارەت ئىككى پارامىتىرى بولسا، ئۇنداقتا قايتۇرۇلىدىغان JSON ھەرپ زەنجىرى بۇ فۇنكىسىيەدىن قايتۇرۇلىدىغان پارامىتىرلارنىڭ تەسىرىگە ئۇچىرايدۇ. مەسىلەن:
// person obektini qisqartish var jsonText = JSON.stringify(person, function(key, value) { if (key === "name") { return "alim"; } else if (key === "age") { value++; return value; } else { return value; } }); console.log(jsonText); // {"name":"alim","age":24,"address":{"province":"BeiJing","city":"BeiJing"},"friends":["bc","cc","dc"],"blog":""}
قايتۇرۇلۇدىغان ھەرپ زەنجىرىنى ئالدىغا سۈرۈش
ئۈچىنچى پارامىتىرنىڭ قايتۇرۇدىغان ھەرپ زەنجىرىنى ئالدىغا سۈرۈش رولى بارلىقىنى كۆرۈپ ئۆتكەن ئىدۇق. ئۈچىنچى پارامىتىرغا سان بەلگىلىگىنىدە، قايتۇرىلىدىغان ھەرپ زەنجىرى مەزكۇر سان قىممىتىدە ئالدىغا سۈرۈلىدۇ. مەسىلەن:
// person obekti yuqiriqi bilen oxshash var jsonText = JSON.stringify(person, null, 2); console.log(jsonText);
نەتىجىسى تۆۋەندىكىدەك بولىدۇ:
// netije { "name": "Teshna", "age": 24, "address": { "province": "BeiJing", "city": "BeiJing" }, "friends": [ "bc", "cc", "dc" ], "blog": "" }
يەنى ھەربىر قايتۇرۇلغان قىممەتنىڭ ئالدىدا 2 دىن بوش ئورۇن قالدۇرۇلغان.
ئۈچىنچى پارامىتىرغا بەلگىلەنگىنى مەلۇم ھەرپ زەنجىرى بولغىنىدا، قايتۇرۇلغان نەتىجىلەر موشۇ ھەرپ زەنجىرىدىكى بەلگىلەرنى ئالدىغا سۈرۈش بەلگىسى قىلىپ ئىشلىتىدۇ. مەسىلەن:
// person obekti yuqirigha oxshash // * belgisi arqiliq aldigha sureyli var jsonText = JSON.stringify(person, null, "*"); console.log(jsonText);
نەتىجىسى خۇددى مۇنداق:
// netije { *"name": "Teshna", *"age": 24, *"address": { **"province": "BeiJing", **"city": "BeiJing" *}, *"friends": [ **"bc", **"cc", **"dc" *], *"blog": "" }
يەنە مەسىلەن:
// person obekti yuqirigha oxshash // jediwel belgisi (Tab) ishletkende var jsonText = JSON.stringify(person, null, "\t"); console.log(jsonText);
نەتىجىسى مۇنداق:
// netije { "name": "Teshna", "age": 24, "address": { "province": "BeiJing", "city": "BeiJing" }, "friends": [ "bc", "cc", "dc" ], "blog": "" }
خاسلاشتۇرۇلغان تەرتىپلەشتۈرۈش
ئەگەر يۇقىرىقى ئۇسسۇللار ئىھتىياجنى قامدىيالمىسا، ئۇنداقتا تەرتىپلەشتۈرمەكچى بولغان JavaScript ئوبىكتىغا toJSON()
فۇنكىسيەسىنى قوشۇپ، خالىغان شەكىلدە قىممەت قايتۇرۇشقا بولىدۇ. مەسىلەن:
var person = { name: "Teshna", age: 24, address: { province: "BeiJing", city: "BeiJing" }, friends: ["bc", "cc", "dc"], blog: "", toJSON: function() { this.name = "Alim"; return "Abdulla " + this.name; } }; var jsonText = JSON.stringify(person); console.log(jsonText); // "Abdulla Alim"
JSON نى يېشىش
JavaScript دا ئادەتتە JSON ئوبىكتىنىڭ parse()
فۇنكىسىيەسى ئارقىلىق JSON نى يېشىدۇ. مەسىلەن تۆۋەندىكىدەك:
var jsonText = '{"name":"Teshna","age":24,"address":{"province":"BeiJing","city":"BeiJing"},"friends":["bc","cc","dc"],"blog":""}'; var person = JSON.parse(jsonText); console.log(person);
نەتىجىسى تۆۋەندىكىدەك:
JSON نىڭ قولاي تەرەپلىرى
1. XML گە ئوخشاش مۇرەككەپ بولغان مەلۇمات قۇرۇلمىسىنى ئۈنۈملۈك ئىپادىلەپ بېرىشكە قادىر.
2. XML گە قارىغاندا تولىمۇ يىنىك.
3. گىرامماتىكىسى ئاددى ھەم چۈشىنىشلىك.
4. ئۆزى يىنىك بولغاچقا، ئالماشتۇرۇش جەريانىدا ئىگەللەيدىغان مەنبە نىسبەتەن ئاز بولىدۇ، مۇازىمىتىرغا چۈشىدىغان بېسىممۇ مۇناسىپ تۆۋەن بولىدۇ.
پايدىلانغان مەنبەلەر:
1. JavaScript高级程序设计(第3版)
ھارمىغايسىز تەشنا باي….باسقان ھەرقەدەملىرىڭىزگەمەرھابائۇتۇقلاربولسۇن…….
رەھمەت
تەشقاجون! Json دىگەننى يىرتىۋىتىدىغان بوپ كىتىپسىز ھە!
JSONنى iOS ئەپ ئېچىشنى ئۆگىنىش جەريانىدا ئۇچراتتىم، نورمالدا ئەپلەرنىڭ توردىكى مەزمۇنلارنى تارتىپ ئېلىشىدا مۇشۇ تىلدىن پايدىلىنىدىكەن، قارىسام چۈشۈنۈشلۈك ۋە ئاددى تۇيۇلدى ئەمما ئىچكىرىلەپ تەتقىق قىلىشقا تېخى قادىر بولالمىدىم.
قېنى سىلى بىر ھەھۇ دەپ باقسىلا….
ئەپ ئېچىشتا ئالامەت ئەسقاتىدىكەن بۇ. بولۇپمۇ مۇلازىمىتىر بىلەن ئالاقە قىلىدىغان ئەپلەردە تېخىمۇ شۇنداق! ئاددىيسى ئەپ نەشر يېڭىلاش ئۇچۇرىمۇ دەل موشۇ json شەكلىدە ئەمەسمۇ…
چۈشنىشلىك ھەم ئىسىل ئۇگۈنۇش خاتىرىسى بوپتۇ……داۋامىنى كۆرۈشنى ئىستەيمەن قېرىندىشىم.
چۈشىنىشلىك يازالىغان بولساملا مەن خۇشال. بەزى نەرسىلەرنى ئۇيغۇرچە يېزىپ چۈشەندۈرمەكمۇ بىر مەسىلە ئېكەن..
مەنزىلنىڭ كېيىنكى كومپيۇتېر نۇسقىسىغا API يېزىپ باقماقچى بولغان ئىدىم. مۇشۇنىڭدىن پايدىلىنىشنى لايىق تاپقان ئىدىم.
مەنمۇ ئۆتكەندە ئازراق كۆرۈپ باققان php دا API ھاسىللاش توغرسىدىكى يازمىلارنى، قارىماققا تەس ئەمەستەك قىلاتتى. ھېلىقى wordpress نىڭ API ھاسىللاپ بېرىدىغان قىستۇرمىسىمۇ بولىدىكەن…
ئۇنداق قىستۇرما بولسا تېخى ياخشىغۇ! قايتا يېزىشنىڭ ھېچ ھاجىتى قالمىغۇدەك.
WP-Json دېگەن قىستۇرما ھاجىتىڭىزدىن چىقىدۇ.
بەك ياخشى تېما بوپتۇ داۋاملىق تىرېشىڭ

رەھمەت، كېلىپ تۇرۇڭ ئەمىسە..
مەن ئارقا بەتكە كىرەلمىدىم، مەخپى نۇمۇرۇمنى ئۇنتۇپ قاپتىمەن، يوللاپ بىرەلەرسىزمۇ؟
يوللاپ قويدۇم..
ياخشى تىمىكەن. مەندەك يېڭى ياچاقلارغا تازا باب كەلگۈدەك. بولسا مۇشۇ پ خ پ تەرەپتىنمۇ بىر تىما يازغان بولسىڭىز، ياخشى بولاتتىكەن.
Json دەپ بەك كۆپ ئاڭلاپ كەتتىم …. لىكىن ھازىرغىچە نىمىگە ئىشلىتىدىغاننى تازا ئېنىق ئايدىڭلاشتۇرالمىدىم …… بولسا مەلۇم بىر ئەمەلى مەسلە ئارقىلىق چۈشەنچە بەرگەن بولسىڭىز ….. ياكى مۇشۇ توغۇرلۇق بىر سىن دەرسلىكى ئىشلەپ قويسىڭىز …. ھەقلىق بولسىمۇ مەيلى سېتىۋالاتتىم ……..
چچ: 614409814