JSON (JavaScript Object Notation) คือ รูปแบบของข้อมูลที่ใช้สำหรับแลกเปลี่ยนข้อมูลที่มีขนาดเล็ก ซึ่งคนสามารถทำความเข้าใจได้ง่าย และสามารถถูกสร้างและอ่านโดยเครื่องได้ง่าย มันถูกกำหนดภายใต้ภาษา JavaScript(JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999.) JSON เป็นรูปแบบข้อมูลตัวอักษรที่มีความเป็นอิสระอย่างสมบูรณ์ แต่จะมีหลักการการเขียนที่คุ้นเคยกับนักเขียนโปรแกรมภาษาต่างๆ ได้ ไม่ว่าจะเป็น ภาษา C, C++, C#, Java, Javascript, Perl, Python และอื่นๆ คุณสมบัติเหล่านี้ทำให้ JSON เป็นภาษาแลกเปลี่ยนข้อมูลที่มีสมบูรณ์แบบ

     ในการทำงานหลายอย่างกับ javascript เราจะพบ JSON เข้ามาเกี่ยวข้องด้วย ยกตัวอย่างการทำงานกับ script หลายๆตัวที่มีการเรียกข้อมูลแบบ AJAX ก็มักจะส่งข้อความตอบกลับมาในรูปแบบ JSON อยู่เนืองๆ จริงๆแล้ว เรารับมาใช้ต่อได้ไม่ยากเลยครับ หากเราเข้าใจเรื่องของ Object งั้น ขออธิบายเรื่องของ Object ก่อนดีกว่า เพราะว่า programmer สมัยใหม่ หากไม่รู้จัก Object แล้วล่ะก็ คงเชยน่าดู Object ในการ Program คืออะไร หากอยากเข้าใจง่ายๆ ให้เรานึกถึง array เอาไว้ครับ (ถ้า array ยัง งง คงต้องไปทบทวนการเขียนโปรแกรมหน่อยล่ะมั้งครับ) ใน array ตามปกติ 1 array เราจะมีได้หลาย index ซึ่ง index ก็เก็บค่าของตัวเองเอาไว้ ตัวอย่างเช่น ใน PHP เราเขียนโค้ดดังนี้
    
    มาตรฐานของฟอร์แมต JSON คือ RFC 4627 มี Internet media type เป็น application/json และมีนามสกุลของไฟล์เป็น .json

    ปัจจุบัน JSON นิยมใช้ในเว็บแอปพลิเคชัน โดยเฉพาะ AJAX โดย JSON เป็นฟอร์แมตทางเลือกในการส่งข้อมูล นอกเหนือไปจาก XML ซึ่งนิยมใช้กันอยู่แต่เดิม สาเหตุที่ JSON เริ่มได้รับความนิยมเป็นเพราะกระชับและเข้าใจง่ายกว่า XML

    หลายท่านที่เริ่มเขียนเว็บมาได้ซักระยะ จะเริ่มมีการนำ plugin หลายๆ ตัวมาใช้ จะพบว่าเราได้ยินคำว่า JSON อยู่บ่อยๆ หลายๆ คนคงสงสัยว่ามันคืออะไร ทำหน้าที่อะไร บางคนอาจทราบว่า มันเป็นรูปแบบการส่งข้อมูลอย่างหนึ่ง ใช้ๆ ไป ลองผิดลองถูก ใช้ได้บ้าง ไม่ได้บ้าง พอถูๆ ไถๆ กันไป แต่พอท่านได้เขียนเว็บมาถึงจุดๆ นึง ท่านจำเป็นต้องลงลึกไปกว่านี้ ต้องเข้าใจรูปแบบของมัน เพื่อที่จะประยุกต์กับงานต่างๆ ได้ โดยบทความนี้ผมจะอธิบายแบบเข้าใจง่ายๆ ครับ

    JSON หรือ Java Script Object Notation เป็นวิธีการที่ทำให้ JavaScript แลกเปลี่ยนข้อมูลกับ Server ได้อย่างง่ายดายครับ รูปแบบของ JSON นั้น อาจทำให้หลายๆ ท่านงงกับมันไม่มากก็น้อยล่ะครับ เช่น บางครั้งทำไมใช้ [] บางครั้งใช้ {} มันมีเหตุผลอะไร มีความหมายอย่างไร ถ้าจะให้อธิบายรูปแบบเป็นประโยคก็คือ JSON ถูกสร้างขึ้นจากชุดข้อมูลของ literal object notation ใน javascript JSON จะใช้ [] แทน array และใช้ {} แทน hash (หรือ associate array ) แต่ละสมาชิกคั่นด้วย comma (,) และแต่ละ ชื่อสมาชิกคั่นด้วย colon (:)

   JSON สามารถสร้างได้ 2 รูปแบบ คือ

     - การจัดเก็บในชุดข้อมูลที่มีชื่อข้อมูลและข้อมูลคู่กัน  ในภาษาต่างๆ ข้อมูลจะจัดอยู่ในรูปแบบของ Object, record, struct, dictionary, hash table, keyed list หรือ assosiative array

     - ลำดับของค่าข้อมูล ในภาษาโปรแกรมส่วนใหญ่ จะจัดอยู่ในรูปแบบของ array, vector, list หรือ sequence

     ใน JSON มันทั้งหลายมีรูปแบบต่างๆเหล่านี้ (json format) :

     Object
 
     json_object

     




     Object นั้นเป็นชุดของข้อมูลที่มีชื่อข้อมูลและค่าของข้อมูลนั้นคู่กัน ซึ่งจะถูกเริ่มต้นด้วยเครื่องหมาย { และจะปิดท้ายข้อมูลด้วยเครื่องหมาย } ข้อมูลแต่ละค่าจะมีเครื่องหมาย :  กำกับระหว่างชื่อข้อมูลกับค่าของข้อมูล และแต่ละข้อมูลจะมีเครื่องหมาย , คั่น

     Array
     

     




    Array เป็นลำดับของข้อมูล ซึ่งจะถูกเริ่มต้นด้วยเครื่องหมาย [  และจะจบด้วยเครื่องหมาย ]  แต่ละค่าของข้อมูลจะถูกคั่นด้วยเครื่องหมาย ,

     Value
     

     













    Value เป็น String ที่อยู่ในเครื่องหมาย “” หรือตัวเลข หรือค่าทางตรรกศาสตร์ true,false หรือค่า null หรือ object หรือ array ซึ่งโครงสร้างสามารถวางซ้อนกันได้

     String
     


     




















    String เป็นลำดับของตัวอักษรตั้งแต่ 0 ตัวอักษรหรือมากกว่า ซึ่งอยู่ภายใต้เครื่องหมาย “”  และจะใช้เครื่องหมาย ในการใส่เครื่องหมายกำกับต่างๆ ซึ่งจะมีลักษณะคล้ายกับ String ในภาษา C หรือภาษา Java


     Number
     


     











    Number นั้นมีความคล้ายคลึงกับ Number ในภาษา C หรือภาษา Java อย่างมาก แต่จะไม่สามารถใช้เลขฐาน 8 กับเลขฐาน 16 ได้

     ช่องว่าง(Whitespace) สามารถที่จะใส่ไว้ระหว่างสัญลักษณ์ต่างๆได้ ยกเว้นรายละเอียดซึ่งเข้ารหัสที่สมบูรณ์ในการบรรยายภาษาต่างๆ

    โครงสร้างของ JSON
     JSON นั้นใช้ลักษณะภาษาของ Javascript แต่ไม่ถูกมองว่าเป็นภาษาโปรแกรม กลับถูกมองว่าเป็นภาษาในการแลกเปลี่ยนข้อมูลมากกว่า ในปัจจุบันมีไลบรารีของภาษาโปรแกรมอื่นๆ ที่ใช้ประมวลผลข้อมูลในรูปแบบ JSON มากมาย ตัวอย่างของ JSON 
     [
       {"firstname":"name","lastname":"name"}, 
       {"firstname":"name1", "lastname":"name2"} 
    ]
     JSON นั้นยังสามารถจัดเก็บข้อมูลที่เป็น ลักษณะของ Master - Detail ได้อีกด้วย ตัวอย่างการจัดเก็บข้อมูล
    [
      {"firstname" : "name", 
       "lastname": "name",
       "address" : [ 
                          { 
                            "address1" : "adress",
                            "province" : "bangkok",
                            "country" : "Thailand" 
                          }
                       ]
        }
    ]

    สำหรับการใช้งานที่ซ่อนอยู่นี้มีความสามารถอยู่อย่างนึงที่ผมเพิ่งรู้ว่า "สามารถส่งข้อมูลข้าม ภาษาที่แต่ละคนพัฒนาได้ โดยส่งข้อมูลผ่านรูปแบบ Json" แต่หลายคนน่าจะรู้กันแล้ว ^^
    ศึกษาข้อมูลเพิ่มเติมได้ที่ http://www.json.org/

     ที่มา select2web