สัญญากรณ์เชิงวัตถุจาวาสคริปต์ (JSON : JavaScript Object Notation)
เจสันเป็นไวยากรณ์ที่ใช้สำหรับจัดเก็บและแลกเปลี่ยนข้อความเหมือนกับเอ็กซ์เอ็มแอล(XML) มีขนาดเล็ก เร็ว และจำแนกได้ง่ายกว่าเอ็กซ์เอ็มแอล เป็นไวยากรณ์การรับส่งข้อความที่ไม่ขึ้นอยู่กับแพลตฟอร์ม(Independent
Platform) หมายความว่า ทุกๆภาษาสามารถใช้ไวยากรณ์นี้ในการแลกเปลี่ยนข้อความระหว่างกันได้ ตัวอย่างของไวยากรณ์เจสันแสดงดังรูปต่อไปนี้
จากรูปแสดงถึงออปเจ็ค(Object) "employees" ที่เป็นอาร์เรย์(Array)
ซึ่งภายในออปเจ็ค "employees" ประกอบไปด้วยระเบียน(Record) 3 ระเบียนหรือออปเจ็ค 3 ออปเจ็ค ใน 1 ออปเจ็คจะประกอบไปด้วยคู่ของคีย์กับค่าข้อมูล ("Key" : "Value") การเข้าถึงข้อมูลในแต่ละระเบียนนั้นเราจะอ้างผ่านคีย์ของระเบียนนั้นๆ
เช่น
ต้องการเข้าถึงข้อมูลชื่อ(firstName)ของออปเจ็ค "employees" ในระเบียนที่ 3 สามารถทำได้ดังนี้
ต้องการเข้าถึงข้อมูลชื่อ(firstName)ของออปเจ็ค "employees" ในระเบียนที่ 3 สามารถทำได้ดังนี้
employees[2].firstName จะได้ข้อมูลเป็น “John”
ต้องการเข้าถึงข้อมูลนามสกุล(lastName)ของออปเจ็ค "employees" ในระเบียนที่ 1 สามารถทำได้ดังนี้
employees[0].lastName
จะได้ข้อมูลเป็น “Doe”
สิ่งที่เหมือนกับเอ็กซ์เอ็มแอล(XML)
1. เป็นข้อความธรรมดา(plain text)
2. สามารถอ่านเข้าใจได้
3. เป็นลำดับชั้น(hierarchical)
สิ่งที่ไม่เหมือนกับเอ็กซ์เอ็มแอล(XML)
1. ไม่มีแท็ก(Tag)กำกับ
2. สั้นกระทัดรัดกว่า
3. อ่านและเขียนได้เร็วกว่า
4. มีความสามารถในการใช้อาร์เรย์เข้ามาช่วย
5. ไม่เป็นคำสงวน
ไวยากรณ์เจสัน(JSON Syntax)
1. ข้อมูล(Data)ประกอบไปด้วยคู่ของคีย์(Key)และค่าข้อมูล(Value) "Key" : "Value"
2. ข้อมูลแต่ละข้อมูลจะแยกจากกันด้วยเครื่องหมายจุลภาค(Comma) ","
3. ข้อมูลหลายๆข้อมูลรวมกันเป็น
1 ออปเจ็ค(Object) หรือ 1 ระเบียน(Record)
4. ใน 1 ออปเจ็คหรือ 1 ระเบียนจะเปิดและปิดด้วยเครื่องหมายปีกกา “{” และ “}”
5. ออปเจ็คแต่ละออปเจ็คจะแยกจากกันด้วยเครื่องหมายจุลภาค(Comma) ","
6. หลายๆออปเจ็ครวมกันเป็นอาร์เรย์
1 ก้อนเปิดและปิดด้วยเครื่องหมายปีกกา “[” และ “]”
ข้อมูล(Data)ประกอบไปด้วยคู่ของคีย์(Key) และค่าข้อมูล(Value) "Key" : "Value"
ข้อมูลภายในเจสัน สามารถเป็นได้ดังนี้
- ข้อมูลตัวเลข ได้แก่ ตัวเลขจำนวนเต็ม(integer) และตัวเลขทศนิยม(floating point) ไม่ต้องมีเครื่องหมาย "" หุ้ม เช่น "data1" : 2 , "data2" : 8.41 เป็นต้น
- ข้อมูลตัวอักษร(string) ต้องมีเครื่องหมาย "" หุ้ม เช่น "word" : "na5cent" เป็นต้น
- ข้อมูลทางตรรกะ(logical) ประกอบไปด้วย จริง(true)และเท็จ(false) ไม่ต้องมีเครื่องหมาย "" หุ้ม
- ข้อมูลที่เป็นอาร์เรย์(array) อยู่ภายในวงเล็บ [ ]
- ข้อมูลที่เป็นออปเจ็ค(object) อยู่ภายในวงเล็บ { }
- ข้อมูลที่ไม่ทราบชนิด(null)
" "Integer" : 2
"FLOAT" : 3.1
"string" : "abcd"
"logical" : true
"logical" : false
"Array" : [{"a" : 1, "b" : 2.0 }, {"a" : 3, "b", 5.2}, ...]
"OBJECT" : {"firstname" : "นายราม", "lastname" : "รักเรียน", ...}
"Undefine" : null
ข้อมูลแต่ละข้อมูลจะแยกจากกันด้วยเครื่องหมายจุลภาค(Comma) ","
ข้อมูลหลายๆข้อมูลรวมกันเป็น 1 ออปเจ็ค หรือ 1 ระเบียน(Record)
ใน 1
ออปเจ็คจะเปิดและปิดด้วยเครื่องหมายปีกกา “{” และ “}”
{ 'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3', ... }, // 1 json object
ออปเจ็คแต่ละออปเจ็คจะแยกจากกันด้วยเครื่องหมายจุลภาค(Comma) ","
หลายๆออปเจ็ครวมกันเป็นอาร์เรย์ 1 ก้อนเปิดและปิดด้วยเครื่องหมายปีกกา “[” และ “]”
[ //start json array
{ 'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3', ... }, // 1 json object index[0]
{ 'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3', ... }, // 1 json object index[1]
{ 'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3', ... }, // 1 json object index[2]
{ 'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3', ... } // 1 json object index[3]
] // end json array
- เนื่องจากมันมีขนาดเล็ก การรับส่งข้อมูลจึงเร็วมาก ประมวลผลเร็วมาก เพราะเป็นแค่ข้อความธรรมดา
- และเนื่องจากมันเป็น cross platform คือใช้กับภาษาอะไรก็ได้ แสดงว่าเราจะเขียนโปรแกรมให้ภาษาหนึ่งให้ติดต่อกับอีกภาษาหนึ่งได้ โดยการใช้ JSON เป็นตัวกลาง เช่น ใช้ php คุยกับ android(java), php คุยกับ javascript และอื่นๆ อีกเยอะแยะครับ ขอแค่มันมี library รองรับ JSON
ตัวอย่าง
json http://na5cent.blogspot.com/search/label/json
JSONP คือไร อะครับ
ตอบลบขอบคุณสำหรับความรู้ครับ
ตอบลบ