跳到主要内容

เนื้อหาภาษาไทย / 泰语内容

系统指南 内容已审核

การสร้าง JSON String ใน PHP

บทความนี้อธิบายวิธีการสร้าง JSON string จากข้อมูลใน PHP โดยใช้ฟังก์ชัน `json_encode()` ซึ่งเป็นเครื่องมือสำคัญในการสร้าง API และ Web Services โดยสามารถแปลงข้อมู...

การสร้าง JSON String ใน PHP

ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับ JSON ว่ามันคืออะไร มีโครงสร้างอย่างไร และทำไมถึงมีความสำคัญในการพัฒนา API และ Web Services ในบทนี้ เราจะมาเจาะลึกวิธีการสร้าง JSON string จากข้อมูลใน PHP เพื่อให้เราสามารถส่งข้อมูลในรูปแบบ JSON กลับไปยัง Client ได้

การใช้ฟังก์ชัน json_encode()

PHP มีฟังก์ชันที่ชื่อว่า json_encode() ซึ่งทำหน้าที่แปลงข้อมูล PHP (เช่น array, object) ให้เป็น JSON string ได้อย่างง่ายดาย ฟังก์ชันนี้เป็นหัวใจสำคัญในการสร้าง JSON response ใน API ของเรา

รูปแบบการใช้งานพื้นฐานของ json_encode() คือ:

string json_encode ( mixed $value , int $options = 0 , int $depth = 512 )
  • $value: ข้อมูล PHP ที่ต้องการแปลงเป็น JSON
  • $options: (Optional) ตัวเลือกเพิ่มเติมในการแปลง JSON
  • $depth: (Optional) กำหนดความลึกสูงสุดของการเข้ารหัส (default: 512)

ลองดูตัวอย่างการใช้งานง่ายๆ:

<?php

$data = array(
  'name' => 'John Doe',
  'age' => 30,
  'city' => 'New York'
);

$json_string = json_encode($data);

echo $json_string; // Output: {"name":"John Doe","age":30,"city":"New York"}

?>

ในตัวอย่างนี้ เราสร้าง array ที่ชื่อ $data ซึ่งมีข้อมูลชื่อ, อายุ, และเมือง จากนั้นเราใช้ json_encode() เพื่อแปลง array นี้ให้เป็น JSON string และแสดงผลลัพธ์ออกมา

การกำหนด Options ให้กับ json_encode()

ฟังก์ชัน json_encode() มี options หลายอย่างที่เราสามารถใช้เพื่อปรับแต่งการแปลง JSON ให้เหมาะสมกับความต้องการของเรา ตัวอย่าง options ที่พบบ่อย:

  • JSON_PRETTY_PRINT: ทำให้ JSON string มีรูปแบบที่อ่านง่ายด้วยการเพิ่ม indentation และ whitespace
  • JSON_UNESCAPED_UNICODE: ป้องกันการ escape ตัวอักษร Unicode (เช่น ภาษาไทย)
  • JSON_UNESCAPED_SLASHES: ป้องกันการ escape เครื่องหมาย slash (/)

เราสามารถกำหนด options เหล่านี้โดยใช้ตัวดำเนินการ | (bitwise OR) เพื่อรวม options หลายๆ อย่างเข้าด้วยกัน

ตัวอย่างการใช้งาน options:

<?php

$data = array(
  'name' => 'John Doe',
  'age' => 30,
  'city' => 'กรุงเทพ' // มีภาษาไทย
);

$json_string = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

echo $json_string;

/* Output:
{
    "name": "John Doe",
    "age": 30,
    "city": "กรุงเทพ"
}
*/

?>

ในตัวอย่างนี้ เราใช้ JSON_PRETTY_PRINT เพื่อให้ JSON string มีรูปแบบที่สวยงาม และ JSON_UNESCAPED_UNICODE เพื่อให้ภาษาไทยแสดงผลได้อย่างถูกต้อง

ตัวอย่างการสร้าง JSON String จากข้อมูลประเภทต่างๆ

json_encode() สามารถทำงานกับข้อมูล PHP ได้หลายประเภท ลองดูตัวอย่างเพิ่มเติม:

จาก Object

<?php

class Person {
  public $name = 'Jane Doe';
  public $age = 25;
}

$person = new Person();
$json_string = json_encode($person);

echo $json_string; // Output: {"name":"Jane Doe","age":25}

?>

ในตัวอย่างนี้ เราสร้าง class ที่ชื่อ Person และสร้าง object จาก class นี้ จากนั้นเราใช้ json_encode() เพื่อแปลง object ให้เป็น JSON string สังเกตว่าเฉพาะ public properties เท่านั้นที่จะถูกแปลง

จาก Array ซ้อน Array

<?php

$data = array(
  'name' => 'John Doe',
  'age' => 30,
  'address' => array(
    'street' => '123 Main St',
    'city' => 'Anytown'
  )
);

$json_string = json_encode($data);

echo $json_string; // Output: {"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"Anytown"}}

?>

ในตัวอย่างนี้ เรามี array ที่มี array ซ้อนอยู่ภายใน address ซึ่ง json_encode() ก็สามารถจัดการได้อย่างถูกต้อง

จากข้อมูลตัวเลขและ boolean

<?php

$data = array(
  'id' => 123,
  'is_active' => true,
  'price' => 99.99
);

$json_string = json_encode($data);

echo $json_string; // Output: {"id":123,"is_active":true,"price":99.99}

?>

json_encode() จะแปลงตัวเลขและ boolean ให้เป็นค่าที่ถูกต้องใน JSON string (true และ false ไม่ใช่ "true" และ "false")

ข้อควรระวังในการใช้งาน json_encode()

  • UTF-8 encoding: ตรวจสอบให้แน่ใจว่าข้อมูล PHP ของคุณอยู่ในรูปแบบ UTF-8 มิฉะนั้นอาจเกิดปัญหาในการแปลง JSON โดยเฉพาะกับภาษาอื่นๆ ที่ไม่ใช่ภาษาอังกฤษ
  • Error handling: json_encode() อาจคืนค่า false หากเกิดข้อผิดพลาด คุณควรตรวจสอบค่าที่คืนกลับมาเสมอ
  • Circular references: หากคุณพยายามแปลง object ที่มี circular references (object อ้างอิงถึงตัวเอง) json_encode() จะไม่สามารถทำงานได้

ตัวอย่างการตรวจสอบ error:

<?php

$data = array(
  'name' => 'John Doe',
  'age' => 30
);

$json_string = json_encode($data);

if ($json_string === false) {
  echo "Error encoding JSON: " . json_last_error_msg();
} else {
  echo $json_string;
}

?>

ในตัวอย่างนี้ เราตรวจสอบว่า json_encode() คืนค่า false หรือไม่ หากเป็นเช่นนั้น เราจะแสดงข้อความแสดงข้อผิดพลาดโดยใช้ json_last_error_msg()

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการสร้าง JSON string จากข้อมูล PHP โดยใช้ฟังก์ชัน json_encode() เราได้เรียนรู้เกี่ยวกับการกำหนด options ต่างๆ เพื่อปรับแต่งการแปลง JSON และได้เห็นตัวอย่างการใช้งานกับข้อมูลประเภทต่างๆ นอกจากนี้ เรายังได้เรียนรู้ข้อควรระวังในการใช้งาน json_encode() เพื่อให้เราสามารถสร้าง JSON string ได้อย่างถูกต้องและมีประสิทธิภาพ ในบทต่อไป เราจะมาเรียนรู้วิธีการส่ง JSON response กลับไปยัง Client

Office.in.th Custom Service

想基于此结构开发或定制系统?

Office.in.th 承接企业级 Web Application、API Integration 以及政府/企业管理系统的设计与开发,并提供长期支持。

查看软件开发服务