PHP กับ JSON

PHP กับ JSON

ในการทำงานหลายอย่างกับ javascript เราจะพบ JSON เข้ามาเกี่ยวข้องด้วย ยกตัวอย่างการทำงานกับ script หลายๆตัวที่มีการเรียกข้อมูลแบบ AJAX ก็มักจะส่งข้อความตอบกลับมาในรูปแบบ JSON อยู่เนืองๆ จริงๆแล้ว เรารับมาใช้ต่อได้ไม่ยากเลยครับ หากเราเข้าใจเรื่องของ Object

งั้น ขออธิบายเรื่องของ Object ก่อนดีกว่า เพราะว่า programmer สมัยใหม่ หากไม่รู้จัก Object แล้วล่ะก็ คงเชยน่าดู

Object ในการ Program คืออะไร หากอยากเข้าใจง่ายๆ ให้เรานึกถึง array เอาไว้ครับ (ถ้า array ยัง งง คงต้องไปทบทวนการเขียนโปรแกรมหน่อยล่ะมั้งครับ) ใน array ตามปกติ 1 array เราจะมีได้หลาย index ซึ่ง index ก็เก็บค่าของตัวเองเอาไว้ ตัวอย่างเช่น ใน PHP เราเขียนโค้ดดังนี้

$my_array = {"topic"=>"ทดสอบ","detail" => "array สร้างขึ้นเพื่อการทดสอบ"};

เราจะได้ตัวแปร $my_array['topic'] ซึ่งเก็บค่า 'ทดสอบ' และ ตัวแปร $my_array['detail'] ซึ่งเก็บค่า 'array สร้างขึ้นเพื่อการทดสอบ' ออกมา โดยเราเรียก $my_array ว่าตัวแปร array 

ในแนวทางของ object ก็ไม่ต่างกันเลยครับ แค่มอง object เป็น array แทนแค่นั้นเอง (จริงๆ เรามีอะไรได้มากกว่านั้น ที่ array ทำไม่ได้ แต่ไม่ใช่จุดประสงค์ของบทความนี้) ตัวอย่างการใช้งาน เราเขียนโค้ดได้ดังนี้

 

$obj = new stdClass();
$obj->topic = "ทดสอบ";
$obj->detail = "สร้างขึ้นเพื่อการทดสอบ";

เพียงเท่านี้ เราจะได้ object $obj->topic ซึ่งเก็บค่า 'ทดสอบ' และ $obj->detail ซึ่งเก็บค่า 'array สร้างขึ้นเพื่อการทดสอบ' ออกมา เห็นมั้ยครับ ว่ามันเหมือนกันนั่นเอง

ที่นี้ กลับเข้ามาที่เรื่องของ JSON อีกรอบ JSON เป็น มาตรฐาน format ที่คล้ายๆกับ XML ซี่ง เราเพียงทำหน้าที่แค่ศึกษาหน้าตา และรูปแบบการใช้งานของมันเท่านั้นพอ ที่เหลือก็คือการเอาไปเรียกใช้แล้ว โดยตัวอย่างของ หน้าตา XML เมื่อเทียบกับ JSON ก็จะได้ประมาณนี้ครับ

<profile>
  <myname>Bee</myname>
  <gender>Male</gender>
</profile>

 ทีนี้ เมื่อเราเปลี่ยนเป็น format JSON เราจะได้หน้าตาแบบนี้ครับ

{
 "profile":{
                "myname":"Bee",
                "gender":"Male"
              }
}

ทีนี้พอจะเห็นภาพของ JSON ขึ้นหรือยังครับ ประโยชน์ของมันไม่ได้มีแค่นั้นครับ ในการเขียน AJAX ยุคแรกๆ ก็คือการใช้ javascript ส่งคำสั่งไปที่ server แล้ว server ก็ตอบกลับมาเป็น HTML แล้วจึงเอามาแสดงผล แต่ว่า HTML เหล่านั้น เราเอาไปใช่ต่อใน javascript ตรงๆไม่ได้ เพราะว่าไม่ได้เป็น object ของ javascript แต่ด้วย format JSON นี้ ทำให้เราสามารถเอาไปใช้งานต่อใน javascript ได้ทันทีที่ได้รับ response จาก server ครับ

เช่น เมื่อเรา ได้รับค่า return มาใน data (ของ javascript ) เราสามารถเรียกใช้ data.profile.name ได้เลย ก็จะได้ "Bee" และเมื่อเราเรียก data.profile.gender เราก็จะได้ "Male" ในทันทีครับ (ไม่มีเครื่องหมาย " นะครับ) แต่ประโยชน์มันยังไม่หมดแค่นั้น เพราะว่าเราไม่ได้เอามาใช้แต่กับ javascript เท่านั้นอย่างที่บอกว่าเราจะเอามาใช้งานกับ PHP

การเอามาใช้กับ PHP ก็ง่ายเลยครับ เพราะว่า PHP version 5.2.0 ขึ้นไปและติดตั้ง PECL เอาไว้ เราสามารถเรียก function เพื่อแปลงค่า JSON นี้เป็น array และ แปลงค่า array เป็น JSON ได้โดยตรงเลยครับ โดยการแปลง JSON เป็น ตัวแปร array ใน PHP นั้นเราจะเรียกใช้งาน function json_decode(ตัวแปรที่เก็บ JSON) และ การแปลงจาก array เป็น JSON เราจะใช้ json_encode(ตัวแปรarray ใน PHP) ง่ายๆแค่นี้เองครับ ทำให้เราสามารถคุยกับ server ที่มี pattern standard เป็น JSON ได้แล้ว

แต่ว่ามีข้อควรระวังการใช้อยู่เหมือนกันก็คือ format ของ JSON จะต้องไม่เสียหาย เหมือนกับการใช้งาน function serialize ที่หาก string ขาดหายกลายเป็น format ที่ไม่ถูกต้องแล้วล่ะก็ ก็จะทำงานเพี้ยนหรือว่าทำงานไม่ได้เลย โดยปกติแล้ว ส่วนท้ายๆมักจะหายอันเนื่องจากการเก็บลง database ที่มีจำนวนตัวอักษรน้อยกว่าความยาวของ pattern ครับ แต่ถ้า format ถูกต้องแล้วไม่ต้องกลัวเลย ทำงานแปลงไปมาได้ สบายมาก

เรื่องของ JSON ก็มีเท่านี้ล่ะครับ ความรู้เท่านี้ก็เพียงพอสำหรับการทำงานได้แล้ว แต่ถ้ามีอะไรเพิ่มเติมก็มาแชร์เพิ่มเติมกันได้ด้านล่างเลยนะครับ

Create: Modify : 2011-11-26 17:02:11 Read : 15008 URL :