วันอังคารที่ 28 กุมภาพันธ์ พ.ศ. 2560

JSON

JSON
จากวิกิพีเดีย สารานุกรมเสรี
เจซัน (อังกฤษ: JSON: JavaScript Object Notation เสียงอ่านภาษาอังกฤษ: /ˈdʒeɪsən/ แปลว่า สัญกรณ์วัตถุจาวาสคริปต์) เป็นฟอร์แมตสำหรับแลกเปลี่ยนข้อมูลคอมพิวเตอร์ ฟอร์แมต JSON นั้นอยู่ในรูปข้อความธรรมดา (plain text) ที่ทั้งมนุษย์และโปรแกรมคอมพิวเตอร์สามารถอ่านเข้าใจได้
มาตรฐานของฟอร์แมต JSON คือ RFC 4627 มี Internet media type เป็น application/json และมีนามสกุลของไฟล์เป็น .json
ปัจจุบัน JSON นิยมใช้ในเว็บแอปพลิเคชัน โดยเฉพาะ AJAX โดย JSON เป็นฟอร์แมตทางเลือกในการส่งข้อมูล นอกเหนือไปจาก XML ซึ่งนิยมใช้กันอยู่แต่เดิม สาเหตุที่ JSON เริ่มได้รับความนิยมเป็นเพราะกระชับและเข้าใจง่ายกว่า XML
โครงสร้างของฟอร์แมต
เจสัน เป็นรูปแบบสายอักขระ (String) ชนิดหนึ่งที่ถูกจัดเก็บในรูปแบบที่สามารถอ่านและเข้าใจได้ง่าย ถ้าจะให้เข้าใจง่าย ๆ ก็คือเจสันเปรียบเสมือนรูปแบบของ อาเรย์ (Array) ชนิดหนึ่งที่ใช้รับส่งข้อมูลผ่านอาแจ็กซ์เพราะซึ่งปกติแล้วถ้าเราต้องการรับ-ส่งข้อมูลผ่านอาแจ็กซ์ต่าง ๆ นั้น จะต้องรับ-ส่งมาในรูปแบบของสายอักขระทั้งก้อน และเมื่อฝั่งอาแจ็กซ์ทำการรับค่าที่ทำการส่งค่ากลับมาจากเซิร์ฟเวอร์ ก็จะต้องนำสายอักขระ เหล่านั้นมาตัดตำแหน่งที่ต้องการ เพื่อเอาสายอักขระตัวที่ต้องการมาใช้ แต่สำหรับเจสันแล้ว สามารถรับส่งชุดค่าตัวแปรได้ทั้งฝั่งไคลเอนต์ (Client) และฝั่งเซิร์ฟเวอร์ (Server) โดยทั้ง 2 ฝั่งสามารถทำการเข้ารหัสและถอดรหัสโดยใช้เจสันเอนโค้ด (Json Encode) และ เจสันดีโค้ด (Json Decode) เพื่ออ่านค่าตัวแปรเหล่านั้น และจะเรียกใช้งานมันได้อย่างไร ซึ่งปกติแล้วจะอยู่ในรูปแบบของอาเรย์และสำหรับตัวแปรเจสันนั้นไม่จำกัดแค่รับส่งข้อมูลผ่านเว็บเบราว์เซอร์เท่านั้น แต่ยังสามารถนำเจสันไปประยุกต์กับการรับส่งข้อมูลในรูปแบบอื่น ๆ ได้ เช่นการจับเก็บข้อมูลในรูปแบบของ สายอักขระในข้อความหรือการรับส่งผ่านตัวให้บริการเว็บไซต์ (Web Service) ก็สามารถทำได้เช่นเดียวกัน
JSON นั้นใช้ความสัมพันธ์ของภาษาจาวาสคริปต์ แต่ไม่ถูกมองว่าเป็นภาษาโปรแกรม กลับถูกมองว่าเป็นภาษาในการแลกเปลี่ยนข้อมูลมากกว่า ในปัจจุบันมีไลบรารีของภาษาโปรแกรมอื่นๆ ที่ใช้ประมวลผลข้อมูลในรูปแบบ JSON มากมาย
JSON หรือ Java Script Object Notation เป็นวิธีการที่ทำให้ JavaScript แลกเปลี่ยนข้อมูลกับ Server ได้อย่างง่ายดายครับ
รูปแบบของ JSON นั้น อาจทำให้หลายๆ ท่านงงกับมันไม่มากก็น้อยล่ะครับ เช่น บางครั้งทำไมใช้ [] บางครั้งใช้ {} มันมีเหตุผลอะไร มีความหมายอย่างไร
ถ้าจะให้อธิบายรูปแบบเป็นประโยคก็คือ JSON ถูกสร้างขึ้นจากชุดข้อมูลของ literal object notation ใน javascript JSON จะใช้ [] แทน array และใช้ {} แทน hash (หรือ associate array ) แต่ละสมาชิกคั่นด้วย comma (,) และแต่ละ ชื่อสมาชิกคั่นด้วย colon (:)
ยัง งงๆ กันอยู่ใช่มั้ยล่ะครับ
ก่อนอื่นผมอยากให้ท่านมอง JSON ว่าเป็น Array ซะก่อนครับ ซึ่งจริงๆ แล้ว มันก็มีความคล้ายกันอยู่มาก
ลองดูความแตกต่างระหว่าง JSON กับ Array ดูครับ
JSON
var ekanan = {
               "firstName": "เอกนันท์",
               "lastName": "ขันทอง",
               "address":
                         {
                          "streetAddress": "พระราม2",
                          "city": "กรุงเทพฯ",
                          "postalCode": "10150"
                         },
               "phoneNumbers":
                              [
                               "085-123-4567",
                               "02-555-4567"
                              ]
              }
Array
$ekanan = Array(
                "firstName"=>"เอกนันท์",
                "lastName"=>"ขันทอง",
                "address" =>
                            Array(
                                  "streetAddress"=>"พระราม2",
                                  "city"=>"กรุงเทพฯ",
                                  "postalCode"=>"10150"
                                 ),
                "phoneNumbers"=>
                            Array(
                                  "085-123-4567",
                                  "02-555-4567"
                                 )
               )
เมื่อเอามาเปรียบเทียบกันแล้ว รูปแบบนั้นมีความคล้ายคลึงอยู่มาก หลายท่านคงสังเกตุเห็นกันแล้วว่า เราจะใช้ {} ตอนไหน และใช้ [] เมื่อใด
อย่างที่กล่าวมาข้างต้นครับ “JSON จะใช้ [] แทน array และใช้ {} แทน hash (หรือ associate array)”
พูดภาษาชาวบ้านก็คือ

เราจะใช้ {} (ปีกกา) ต่อเมื่อมี Key จับคู่ Value เช่น Array(“streetAddress”=>”พระราม2″,”city”=>”กรุงเทพฯ”,”postalCode”=>”10150″)และจะใช้ [] (ก้ามปู) ต่อเมื่อไม่มี Key จับคู่ Value เช่น Array(“พระราม2″,”กรุงเทพฯ”,”10150″)
วิธีการใช้ JSON ก็ง่ายๆ ครับ
//นำชุดข้อมูล JSON มาเข้า function eval
var data = eval( '(' + RemoveChar(ajax.responseText) + ')' );
//วิธีอ้างถึงข้อมูล ก็ง่ายๆ ครับ
data.firstName                   จะมีค่าเท่ากับ เอกนันท์
data.address.streetAddress       จะมีค่าเท่ากับ พระราม2
data.phoneNumbers[0]             จะมีค่าเท่ากับ 085-123-4567
data.phoneNumbers[1]             จะมีค่าเท่ากับ 02-555-4567
***ท่านสามารถใช้คำสั่ง json_encode() ใน php เพื่อแปลง array ให้เป็น json ได้ ตัวอย่างเช่น
<?php
$arr  = Array(
                "firstName"=>"เอกนันท์",
                "lastName"=>"ขันทอง",
                "address" =>
                            Array(
                                  "streetAddress"=>"พระราม2",
                                  "city"=>"กรุงเทพฯ",
                                  "postalCode"=>"10150"
                                 ),
                "phoneNumbers"=>
                            Array(
                                  "085-123-4567",
                                  "02-555-4567"
                                 )
               );
echo json_encode($arr);
?>
ผลที่ได้..
              {
               "firstName": "เอกนันท์",
               "lastName": "ขันทอง",
               "address":
                         {
                          "streetAddress": "พระราม2",
                          "city": "กรุงเทพฯ",
                          "postalCode": "10150"
                         },
               "phoneNumbers":
                              [
                               "085-123-4567",
                               "02-555-4567"
                              ]
           }
ยังไงก็หวังว่าบทความนี้จะเป็นประโยชน์สำหรับผู้เริ่มต้นนะครับ
ศึกษาข้อมูลเพิ่มเติมได้ที่ http://www.json.org/

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...