JSON trong PHP - Nắm rõ cách sử dụng JSON trong 10 phút
20/04/2021 02:17
JSON ( JavaScript Object Notation ) là một cách độc lập với nền tảng và ngôn ngữ để tuần tự hóa các đối tượng thành bản rõ. Bởi vì nó thường được sử dụng trên web và PHP cũng vậy, có một phần mở rộng cơ bản để làm việc với JSON trong PHP. Trong bài viết dưới đây, chúng ta sẽ tìm hiểu cách làm việc với JSON trong PHP.
Mục lục
Tìm hiểu về JSON trong PHP
Cú pháp của JSON trong PHP
- string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
- mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
Tìm hiểu JSON trong PHP
Các thông số của JSON trong PHP
Tham số |
Chi tiết |
json_encode |
|
value |
Giá trị đang được mã hóa. Có thể là bất kỳ loại nào ngoại trừ một tài nguyên. Tất cả dữ liệu chuỗi phải được mã hóa UTF-8 |
options |
Bitmask bao gồm SON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR. |
depth |
Đặt độ sâu tối đa. Phải lớn hơn 0 |
json_decode |
|
json |
Chuỗi json đang được giải mã. Chức năng này chỉ hoạt động với các chuỗi được mã hóa UTF-8. |
assoc |
Hàm nên trả về mảng kết hợp thay vì các đối tượng. |
option |
Bitmask của các tùy chọn giải mã JSON. Hiện tại chỉ JSON_BIGINT_AS_STRING được hỗ trợ (mặc định là truyền các số nguyên lớn dưới dạng số nổi) |
Chú ý: Việc xử lý json_decode đối với JSON không hợp lệ rất phức tạp và rất khó xác định một cách đáng tin cậy nếu quá trình giải mã thành công, json_decode trả về null cho đầu vào không hợp lệ, mặc dù null cũng là một đối tượng hoàn toàn hợp lệ để JSON giải mã. Để tránh những sự cố như vậy, bạn nên luôn gọi json_last_error mỗi khi sử dụng.
Gỡ lỗi JSON trong PHP
Khi json_encode hoặc json_decode không phân tích được chuỗi được cung cấp, nó sẽ trả về false. Bản thân PHP sẽ không đưa ra bất kỳ lỗi hoặc cảnh báo nào khi điều này xảy ra, nguyên nhân là do người dùng sử dụng hàm json_last_error () và json_last_error_msg () để kiểm tra xem có lỗi xảy ra hay không và hành động tương ứng trong ứng dụng của bạn (gỡ lỗi, hiển thị thông báo lỗi , Vân vân.).
Ví dụ sau đây cho thấy một lỗi phổ biến khi làm việc với JSON, không thể giải mã / mã hóa một chuỗi JSON (ví dụ: do chuyển một chuỗi được mã hóa UTF-8 không hợp lệ.
// An incorrectly formed JSON string
$jsonString = json_encode("{'Bad JSON':\xB1\x31}");
if (json_last_error() != JSON_ERROR_NONE) {
printf("JSON Error: %s", json_last_error_msg());
}
#> JSON Error: Malformed UTF-8 characters, possibly incorrectly encoded
>>> Đọc thêm: PHP và Python: Đâu là ngôn ngữ nên học trong năm 2021
json_last_error_msg
json_last_error_msg() trả về thông báo mà người lập trình cơ thể đọc được về lỗi cuối cùng xảy ra khi cố gắng mã hóa / giải mã một chuỗi.
- Hàm này sẽ luôn trả về một chuỗi , ngay cả khi không có lỗi xảy ra.
Chuỗi không lỗi mặc định là No Error - Nó sẽ trả về false nếu xảy ra một số lỗi (không xác định) khác
- Hãy cẩn thận khi sử dụng điều này trong các vòng lặp, vì json_last_error_msg sẽ bị ghi đè trên mỗi lần lặp.
Bạn chỉ nên sử dụng chức năng này để hiển thị thông báo, không phải để kiểm tra đối chiếu trong các câu lệnh điều khiển.
json_last_error
json_last_error()trả về một số nguyên được ánh xạ tới một trong các hằng số được xác định trước do PHP cung cấp.
Hằng số |
Ý nghĩa |
JSON_ERROR_NONE |
Không có lỗi nào xảy ra |
JSON_ERROR_DEPTH |
Đã vượt quá độ sâu ngăn xếp tối đa |
JSON_ERROR_STATE_MISMATCH |
JSON không hợp lệ hoặc không đúng định dạng |
JSON_ERROR_CTRL_CHAR |
Lỗi ký tự điều khiển, có thể được mã hóa không chính xác |
JSON_ERROR_SYNTAX |
Lỗi cú pháp (kể từ PHP 5.3.3) |
JSON_ERROR_UTF8 |
Các ký tự UTF-8 không đúng định dạng, có thể được mã hóa không chính xác (kể từ PHP 5.5.0) |
JSON_ERROR_RECURSION |
Một hoặc nhiều tham chiếu đệ quy trong giá trị được mã hóa |
JSON_ERROR_INF_OR_NAN |
Một hoặc nhiều giá trị NAN hoặc INF trong giá trị được mã hóa |
JSON_ERROR_UNSUPPORTED_TYPE |
Đã đưa ra một giá trị thuộc loại không thể mã hóa |
>>> Tham khảo: Khóa học lập trình PHP
Giải mã Chuỗi JSON PHP
Các hàm json_decode() phải mất một chuỗi JSON-mã hóa như tham số đầu tiên của nó và phân tích nó thành một biến PHP.
Thông thường, json_decode()sẽ trả về một đối tượng của \ stdClass nếu mục cấp cao nhất trong đối tượng JSON là một từ điển hoặc một mảng được lập chỉ mục nếu đối tượng JSON là một mảng. Nó cũng sẽ trở lại giá trị vô hướng hoặc NULL cho các giá trị vô hướng nhất định, chẳng hạn như chuỗi đơn giản, "true", "false", và "null". Nó cũng trả NULL về bất kỳ lỗi nào.
Kết luận: Bài viết trên đã giới thiệu tới bạn về JSON trong PHP và một số cách sử dụng JSON để làm việc với PHP. Mong rằng các thông tin trên sẽ hữu ích với bạn. Tìm hiểu thêm về PHP và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H bạn nhé!