หน้าเว็บ

วันจันทร์ที่ 26 มีนาคม พ.ศ. 2555

เจสัน(JSON) คืออะไร

สัญญากรณ์เชิงวัตถุจาวาสคริปต์ (JSON : JavaScript  Object  Notation)

                เจสันเป็นไวยากรณ์ที่ใช้สำหรับจัดเก็บและแลกเปลี่ยนข้อความเหมือนกับเอ็กซ์เอ็มแอล(XML)  มีขนาดเล็ก  เร็ว และจำแนกได้ง่ายกว่าเอ็กซ์เอ็มแอล  เป็นไวยากรณ์การรับส่งข้อความที่ไม่ขึ้นอยู่กับแพลตฟอร์ม(Independent  Platform) หมายความว่า  ทุกๆภาษาสามารถใช้ไวยากรณ์นี้ในการแลกเปลี่ยนข้อความระหว่างกันได้  ตัวอย่างของไวยากรณ์เจสันแสดงดังรูปต่อไปนี้




จากรูปแสดงถึงออปเจ็ค(Object) "employees" ที่เป็นอาร์เรย์(Array) ซึ่งภายในออปเจ็ค "employees" ประกอบไปด้วยระเบียน(Record) 3 ระเบียนหรือออปเจ็ค  3 ออปเจ็ค  ใน  1 ออปเจ็คจะประกอบไปด้วยคู่ของคีย์กับค่าข้อมูล ("Key" : "Value")  การเข้าถึงข้อมูลในแต่ละระเบียนนั้นเราจะอ้างผ่านคีย์ของระเบียนนั้นๆ  เช่น 

ต้องการเข้าถึงข้อมูลชื่อ(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"


ข้อมูลภายในเจสัน สามารถเป็นได้ดังนี้

  1. ข้อมูลตัวเลข ได้แก่ ตัวเลขจำนวนเต็ม(integer) และตัวเลขทศนิยม(floating point)  ไม่ต้องมีเครื่องหมาย "" หุ้ม เช่น "data1" : 2 , "data2" : 8.41 เป็นต้น
  2. ข้อมูลตัวอักษร(string ต้องมีเครื่องหมาย "" หุ้ม เช่น "word" : "na5cent"  เป็นต้น
  3. ข้อมูลทางตรรกะ(logical) ประกอบไปด้วย จริง(true)และเท็จ(false)   ไม่ต้องมีเครื่องหมาย "" หุ้ม
  4. ข้อมูลที่เป็นอาร์เรย์(array) อยู่ภายในวงเล็บ [ ]
  5. ข้อมูลที่เป็นออปเจ็ค(object) อยู่ภายในวงเล็บ { }
  6. ข้อมูลที่ไม่ทราบชนิด(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


ประโยชน์

  1. เนื่องจากมันมีขนาดเล็ก  การรับส่งข้อมูลจึงเร็วมาก  ประมวลผลเร็วมาก  เพราะเป็นแค่ข้อความธรรมดา
  2. และเนื่องจากมันเป็น cross platform คือใช้กับภาษาอะไรก็ได้  แสดงว่าเราจะเขียนโปรแกรมให้ภาษาหนึ่งให้ติดต่อกับอีกภาษาหนึ่งได้  โดยการใช้ JSON เป็นตัวกลาง  เช่น ใช้ php คุยกับ android(java),  php คุยกับ javascript  และอื่นๆ  อีกเยอะแยะครับ  ขอแค่มันมี library รองรับ JSON   


ตัวอย่าง 
json  http://na5cent.blogspot.com/search/label/json

อ้างอิงจาก : http://w3schools.com/json/default.asp

2 ความคิดเห็น: