Hướng dẫn dùng json trong PHP

  • Blog
  • Tin tức

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

  • Cú pháp của JSON trong PHP
  • Các thông số của JSON trong PHP
  • Gỡ lỗi JSON trong PHP
    • json_last_error_msg
    • json_last_error
  • Giải mã Chuỗi JSON PHP

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é!