Hàm json_encode trong PHP là hàm dùng chuyển đổi đối tượng, mảng thành chuỗi dạng JSON. Hàm json_encode thường được sử dụng trong quá trình lưu trữ dữ liệu phức tạp, hoặc sử dụng trong việc viết API cho web, app.
Ngược lại với hàm json_encode là hàm json_decode trong php.
Để convert giá trị chỉ định thành định dạng JSON, người ta sử dụng hàm số json_encode. Hàm số json_encode được viết như sau:
json_encode ( mixed$value
[, int$options
= 0 [, int$depth
= 512 ]] ) : string
Trong đó:
JSON_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
Giá trị trả về.
Lưu ý: Tất cả các string data convert phải được encode thành encoding UTR-8.
JSON_THROW_ON_ERROR
được thêm vào
JSON_INVALID_UTF8_IGNORE
, and JSON_INVALID_UTF8_SUBSTITUTE
đã được thêm vào.JSON_UNESCAPED_LINE_TERMINATORS
options này đã được thêm vào.JSON_PRESERVE_ZERO_FRACTION
options này đã được thêm vào.JSON_PRESERVE_ZERO_FRACTION
options này đã được sử dụng.E_WARNING
không còn hợp lệ khi sử dụng cho một giá trị lỗi.JSON_PRETTY_PRINT
, JSON_UNESCAPED_SLASHES
, and JSON_UNESCAPED_UNICODE
được thêm vào.JSON_NUMERIC_CHECK
đã được sử dụng.JSON_FORCE_OBJECT
, JSON_HEX_AMP
, JSON_HEX_APOS
, JSON_HEX_QUOT
, and JSON_HEX_TAG
đã được sử dụng.
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
{"a":1,"b":2,"c":3,"d":4,"e":5}
code:
<?php
$a = array('<foo>',"'bar'",'"baz"','&blong&', "\xc3\xa9");
echo "Normal: ", json_encode($a), "\n";
echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n";
echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";
$b = array();
echo "Empty array output as array: ", json_encode($b), "\n";
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";
$c = array(array(1,2,3));
echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
$d = array('foo' => 'bar', 'baz' => 'long');
echo "Associative array always output as object: ", json_encode($d), "\n";
echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>
Kết quả:
Normal: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"] Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"] Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"] Quot: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"] Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"] Unicode: ["<foo>","'bar'","\"baz\"","&blong&","e"] All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","e"] Empty array output as array: [] Empty array output as object: {} Non-associative array output as array: [[1,2,3]] Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}} Associative array always output as object: {"foo":"bar","baz":"long"} Associative array always output as object: {"foo":"bar","baz":"long"}
code:
<?php echo "Strings representing numbers automatically turned into numbers".PHP_EOL; $numbers = array('+123123', '-123123', '1.2e3', '0.00001'); var_dump( $numbers, json_encode($numbers, JSON_NUMERIC_CHECK) ); echo "Strings containing improperly formatted numbers".PHP_EOL; $strings = array('+a33123456789', 'a123'); var_dump( $strings, json_encode($strings, JSON_NUMERIC_CHECK) ); ?>
Kết quả:
Strings representing numbers automatically turned into numbers array(4) { [0]=> string(7) "+123123" [1]=> string(7) "-123123" [2]=> string(5) "1.2e3" [3]=> string(7) "0.00001" } string(28) "[123123,-123123,1200,1.0e-5]" Strings containing improperly formatted numbers array(2) { [0]=> string(13) "+a33123456789" [1]=> string(4) "a123" } string(24) "["+a33123456789","a123"]"
code:
<?php var_dump(json_encode(12.0, JSON_PRESERVE_ZERO_FRACTION)); var_dump(json_encode(12.0)); ?>
Kết quả:
string(4) "12.0" string(2) "12"
Giống như bộ mã hóa JSON tham chiếu, json_encode () sẽ tạo JSON là một giá trị đơn giản (nghĩa là không phải đối tượng hay mảng) nếu được cung cấp một chuỗi, số nguyên, float hoặc boolean làm giá trị đầu vào. Mặc dù hầu hết các bộ giải mã sẽ chấp nhận các giá trị này là JSON hợp lệ, một số có thể không, vì đặc tả này không rõ ràng về điểm này.
Để tóm tắt, luôn kiểm tra xem bộ giải mã JSON của bạn có thể xử lý đầu ra bạn tạo từ json_encode ().
<?php header('Content-Type: application/json'); ?>
<?php // International phone number json_encode(array('phone_number' => '+33123456789'), JSON_NUMERIC_CHECK); ?>
kết quả:
{"phone_number":33123456789}
Có lẽ nó có ý nghĩa đối với PHP (như is_numeric (‘+ 33123456789’) trả về đúng), nhưng thực sự, đúc nó thành một int?
Vì vậy, hãy cẩn thận khi sử dụng JSON_NUMERIC_CHECK, nó có thể gây rối với dữ liệu của bạn!.
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_encode() 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
Bình luận: