Bài 20: Cách sử dụng Json trong PHP

Bài 20: Cách sử dụng Json trong PHP

Cũng như các ngôn ngữ lập trình khác thì Json trong PHP là điều không thể thiếu, nhất là đối với các trang web có làm việc với API để liên kết dữ liệu với nhau.

Ở bài 19, tìm hiểu về session và cookie trong PHP mình cũng đã đề cập đến Json để lưu Cookie rồi, ở bài này chúng ta sẽ tìm hiểu chi tiết về nó nhé.

Các hàm xử lý Json trong PHP

Hai hàm json_encode và json_decode là 2 hàm phổ biến để xử lý Json trong PHP hãy cùng sonnguyenaz.com để xem cách sử dụng nhé.

Hàm json_decode trong PHP

Hàm json_decode trong PHP được dùng để chuyển từ Json sang mảng array hoặc Object, có cú pháp sử dụng như sau:

json_decode($json_dau_vao, $kieu_chuyen_doi);

Với $kieu_chuyen_doi được quy định là true nếu muốn trả về mảng hoặc false nếu muốn chuyển thành Object

Nếu không truyền kiểu chuyển đổi thì mặc định là false và chuyển thành Object.

Ví dụ: Một chuỗi json có cấu trúc như sau

{"cam":15,"oi":12,"xoai":3,"dua":4,"na":5}

Bây giờ ta sẽ sử dụng hàm json_decode để chuyển đổi sang mảng array:

<?php
$json_dau_vao='{"cam":15,"oi":12,"xoai":3,"dua":4,"na":5}';
echo '<pre>';
print_r(json_decode($json_dau_vao, true));
?>

Kết quả là trả về một mảng array như sau:

Array
(
    [cam] => 15
    [oi] => 12
    [xoai] => 3
    [dua] => 4
    [na] => 5
)

Và chuyển thành Object:

<?php
$json_dau_vao='{"cam":15,"oi":12,"xoai":3,"dua":4,"na":5}';
echo '<pre>';
print_r(json_decode($json_dau_vao));
?>

Kết quả trả về Object:

stdClass Object
(
    [cam] => 15
    [oi] => 12
    [xoai] => 3
    [dua] => 4
    [na] => 5
)

Hàm json_encode trong PHP

Ngược lại với json_decode thì json_encode trong PHP lại chuyển đổi array và object sang Json với cú pháp như sau:

string json_encode ( $gia_tri_dau_vao, $option, $depth )

Các option trong json_encode:

  • JSON_FORCE_OBJECT,
  • JSON_HEX_QUOT,
  • JSON_HEX_TAG,
  • JSON_HEX_AMP,
  • JSON_HEX_APOS,
  • JSON_INVALID_UTF8_IGNORE,
  • JSON_INVALID_UTF8_SUBSTITUTE,
  • JSON_NUMERIC_CHECK,
  • JSON_PARTIAL_OUTPUT_ON_ERROR,
  • JSON_PRESERVE_ZERO_FRACTION,
  • JSON_PRETTY_PRINT,
  • JSON_UNESCAPED_LINE_TERMINATORS,
  • JSON_UNESCAPED_SLASHES,
  • JSON_UNESCAPED_UNICODE,
  • JSON_THROW_ON_ERROR

$depth: được quy định bằng các max depth bằng số nguyên.

Để encode được tiếng Việt thì ta chọn Option bằng JSON_UNESCAPED_UNICODE

Bây giờ ta thử lấy ví dụ nhé:

Ta có mảng array sau:

$mang_array=array(
"Họ tên"=>"Nguyễn Ngọc Sơn",
"Địa chỉ email"=>"sonnguyenaz@gmail.com",
"Website"=>"sonnguyenaz.com"
);

Sử dụng json_encode để chuyển sang mảng:

<?php
$mang_array=array(
"Họ tên"=>"Nguyễn Ngọc Sơn",
"Địa chỉ email"=>"sonnguyenaz@gmail.com",
"Website"=>"sonnguyenaz.com"
);
//---Chuyển mảng sang json
echo json_encode($mang_array,JSON_UNESCAPED_UNICODE);
?>

Kết quả là:

{"Họ tên":"Nguyễn Ngọc Sơn","Địa chỉ email":"sonnguyenaz@gmail.com","Website":"sonnguyenaz.com"}

Như vậy ta đã chuyển đổi từ mảng sang json mà không bị lỗi tiếng Việt, còn các lựa chọn khác nữa bạn nào cần hỏi thì comment xuống dưới mình sẽ trả lời nhé.

Lời kết

Về xử lý qua lại giữa mảng, object và json trong PHP thì mình đã giới thiệu 2 hàm chuyển đổi json_encode và json_decode.

Cảm ơn các bạn đã theo dõi bài viết.

Rate this post

sonnguyen

Là một nhân viên IT thích chia sẻ những gì mình biết đến tất cả mọi người. Hi vọng được mọi người ủng hộ, nếu có gì sai sót mong các bạn comment xuống dưới để mình khắc phục. Cảm ơn mọi người!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *