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

Bài trước chúng ta đã tìm hiểu được khái niệm JSON là gì rồi và cũng biết được cấu trúc chuỗi JSON như thế nào, vậy thì trong bài này chúng ta sẽ tìm hiểu xử lý JSON trong PHP như thế nào và các hàm xử lý JSON trong PHP từ căn bản đên nâng cao.

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

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

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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 đó:

  • $json_string: là chuỗi JSON
  • $assoc có hai giá trị true / false. Nếu true thì kết quả nó trả về là dạng  array, ngược lại nếu false thì kết quả trả về dạng object. Mặc định là false.

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

Bài viết này được đăng tại [free tuts .net]

$json_string = 
'
    {
        "name" : "Nguyễn Văn Cường",
        "email" : "",
        "website" : "freetuts.net"
    }
';

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

$json_string = 
'
    {
        "name" : "Nguyễn Văn Cường",
        "email" : "",
        "website" : "freetuts.net"
    }
';

// Dạng Mảng
var_dump(json_decode($json_string, true));

// Dạng Object
var_dump(json_decode($json_string));

Kết quả:

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

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.

$array = array(
    "name" => "Nguyễn Văn Cường",
    "email" => "",
    "website" => "freetuts.net"  
);

Bài giải như sau:

$array = array(
    "name" => "Nguyễn Văn Cường",
    "email" => "",
    "website" => "freetuts.net"  
);

echo json_encode($array);

Kết quả:

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

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.

3. Lời kết

Như vậy trong PHP cung cấp cho chúng ta hai hàm quan trọng đó là json_decode và json_encode, việc sử dụng nó thì rất là đơn giản, quan trọng là ý tưởng vận dụng nó khi xây dựng ứng dụng như thế nào. Chúc các bạn học tốt nhé.

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