Xử lý JSON trong PHP

Bởi Hai Nguyen vào January 2016

1. Xử lý JSON trong PHP

PHP cũng là một ngôn ngữ lập trình nên nó cũng có cung cấp các thư viện xử lý JSON giúp lập trình viên giải quyết nó dễ dàng. Chúng ta có hai hàm đó là hàm json_decode và json_encode:

Hàm json_decode trong php

Hàm này mục đích chuyển một chuỗi JSON sang dạng mảng hoặc object, hàm này có cú pháp như sau: json_decode($json_string, $assoc). Trong đó:

Ví dụ: Cho chuỗ JSON như sau:

Hãy dùng hàm json_decode để chuyển về dạng mảng và object. Bài giải như sau:

Kết quả:

 

json-decode-trong-php.png

 

Hàm json_encode trong PHP

Hàm này có chức năng ngược lại hàm json_decode, nó sẽ chuyển một mảng trong PHP hoặc object trong PHP thành chuỗi JSON. Cú pháp như sau: json_encode($array), trong đó $array là mảng ban muốn chuyển đổi. Kết quả chuỗi JSON sẽ tự động chuyển các ký tự có dấu, các ký tự đặc biệt sang dạng an toàn nên bạn nhìn vào nó hơi khác. Xem ví dụ dưới đây.

Ví dụ: Sử dụng hàm json_encode để chuyển đổi mảng sau sang chuỗi JSON.

 

Bài giải như sau:

Kết quả:

json-encode-trong-php.png

2. Các ví dụ JSON trong PHP

Ứng dụng hay nhất của JSON trong PHP đó là dùng để xuất ra chuỗi JSON dưới dạng API để các client có thể lấy và xử lý, thông dụng nhất là ajax. Mình đã có một serie về xử lý JSON trong ajax trong serie ajax toàn tập nên các bạn đến serie đó để xem cách sử dụng JSON kết hợp ajax nhé.

Bây giờ ta sẽ thảo luận về cách lưu trữ JSON trong MYSQL. Thông thường chúng ta sẽ kết hợp hàm json_decode trong php để chuyển đổi một mảng các thông tin nào đó sang chuỗi JSON và lưu vào trong CSDL. Sau đó khi lấy thông tin từ MYSQL để hiển thị ra website thì chúng ta dùng hàm json_encode để chuyển đổi ngược trở lại. Như vậy khó khăn lớn nhất của những ban newbie chính là ý tưởng thiết kế CSDL như thế nào để lưu JSON? Thông thường những field nào mà cần tìm kiếm thông tin thì bạn nên tạo một field riêng, còn các thông tin mà không áp dụng trong tìm kiếm thì bạn có thể đưa nó vào một chuỗi JSON rồi lưu vào một field, như vậy sẽ giải được số lượng field.