Code Tu Tam

Hàm json_decode() trong PHP dùng để làm gì?

Rate this post

Hàm json_decode PHP dùng để giải mã 1 chuỗi JSON . Kết quả trả về của json_decode có thể là 1 mảng hoặc 1 đối tượng. Trái ngược với hàm json_decode là hàm json_encode – hàm để mã hóa thành chuỗi json.

Định Nghĩa.

Để nhận và giải mã chuỗi đã mã hóa JSON, người ta sử dụng hàm json_decode. Giải mã nói một cách đơn giản là khôi phục dữ liệu đã được mã hoá trở về bản gốc

Cú pháp.

Cú pháp:

json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] ) : mixed

Trong đó:

Giá trị trả về.

Lưu ý: khi tham số return được sử dụng, hàm này sử dụng bên trong bộ đệm đầu ra, do đó không thể sử dụng nó trong hàm gọi lại ob_start ().

Sự thay đổi trên các phiên bản.

Ví dụ.

Ví dụ 1 dùng hàm json_decode() bình thương.

code:

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>

Kết quả:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

Ví dụ 2 khi chuyền một thuộc tính đối tượng không hợp lệ.

Mô tả:

Truy cập các phần tử trong một đối tượng có chứa các ký tự không được phép theo quy ước đặt tên của PHP (ví dụ: dấu gạch nối) có thể được thực hiện bằng cách đóng gói tên phần tử trong dấu ngoặc nhọn và dấu nháy đơn.

code:

?php

$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345

?>

Ví dụ 3 các lỗi phổ biến khi sử dụng json_decode

code:

<?php
// các chuỗi sau là JavaScript hợp lệ nhưng JSON không hợp lệ
// tên và giá trị phải được đặt trong dấu ngoặc kép
// dấu ngoặc đơn không hợp lệ
$bad_json = "{'bar': 'baz'}";
json_decode ($ bad_json); // vô giá trị
// tên phải được đặt trong dấu ngoặc kép
$bad_json = '{bar: "baz"}';
json_decode ($ bad_json); // vô giá trị
// dấu phẩy không được phép
$bad_json = '{bar: "baz",}';
json_decode ($bad_json); // vô giá trị
?>

Ví dụ  4 Lỗi độ sâu.

code:

$json = json_encode(
    array(
        1 => array(
            'English' => array(
                'One',
                'January'
            ),
            'French' => array(
                'Une',
                'Janvier'
            )
        )
    )
);

// Xác định các lỗi.
$constants = get_defined_constants(true);
$json_errors = array();
foreach ($constants["json"] as $name => $value) {
    if (!strncmp($name, "JSON_ERROR_", 11)) {
        $json_errors[$value] = $name;
    }
}

// Hiển thị các lỗi cho độ sâu khác nhau.
foreach (range(4, 3, -1) as $depth) {
    var_dump(json_decode($json, true, $depth));
    echo 'Last error: ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
}
?>

Kết quả:

array(1) {
  [1]=>
  array(2) {
    ["English"]=>
    array(2) {
      [0]=>
      string(3) "One"
      [1]=>
      string(7) "January"
    }
    ["French"]=>
    array(2) {
      [0]=>
      string(3) "Une"
      [1]=>
      string(7) "Janvier"
    }
  }
}
Last error: JSON_ERROR_NONE

NULL
Last error: JSON_ERROR_DEPTH

Ví dụ 5 sử json_decode () với các số nguyên lớn.

code:

<?php
$json = '{"number": 12345678901234567890}';

var_dump(json_decode($json));
var_dump(json_decode($json, false, 512, JSON_BIGINT_AS_STRING));

?>

Kết quả:

object(stdClass)#1 (1) {
  ["number"]=>
  float(1.2345678901235E+19)
}
object(stdClass)#1 (1) {
  ["number"]=>
  string(20) "12345678901234567890"
}

Chú ý.

Hàm liên quan.

Thông tin thêm.

 

Các bạn có thể xem chi tiết hơn trên php.net.
Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm json_decode() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé.
Cảm ơn các bạn đã ghé thăm codetutam.com

Exit mobile version