oleh Vincy. Terakhir diubah pada 27 Oktober 2022.
Tutorial ini mencakup detail dasar PHP json_encode fungsi. Ini memberikan contoh decoding input string JSON ke array PHP.
Ini juga menjelaskan konvensi, aturan, dan batasan fungsi PHP JSON ini. Pertama, mari kita lihat contoh cepat mengonversi JSON ke array.
Konversi JSON ke PHP Array
Contoh ini memiliki string JSON yang memetakan hewan dengan hitungannya. Output dari mengonversi JSON ini akan mengembalikan array asosiatif.
Ia menggunakan PHP json_decode() dengan boolean true sebagai parameter kedua. Dengan params decoding ini, JSON akan diubah menjadi array PHP.
Contoh cepat
<?php
// JSON string in PHP Array
$jsonString = '{"Lion":101,"Tiger":102,"Crocodile":103,"Elephant":104}';
$phpArray = json_decode($jsonString, true);
// display the converted PHP array
var_dump($phpArray);
?>
Keluaran
array(4) {
["Lion"]=>
int(101)
["Tiger"]=>
int(102)
["Crocodile"]=>
int(103)
["Elephant"]=>
int(104)
}
Lihat demo online ini untuk mendapatkan hasil larik yang dikonversi dari input JSON.
Lihat demo
Lihat diagram yang menunjukkan string JSON input dan objek stdClass output dari decoding JSON. Pada artikel sebelumnya, kita telah melihat contoh operasi kebalikan yang mengubah array PHP menjadi string JSON.
PHP json_decode()
Fungsi PHP asli ini menerjemahkan string JSON menjadi pohon objek yang dapat diuraikan atau array. Ini adalah sintaks dari fungsi ini.
json_decode(
string $json,
?bool $associative = null,
int $depth = 512,
int $flags = 0
): mixed
- $json – Masukkan string JSON.
- $associative – boolean berdasarkan format output yang bervariasi antara array asosiatif dan objek stdClass.
- $ depth – batas bersarang yang diizinkan.
- $flag – Tetapkan konstanta untuk mengaktifkan fitur seperti penanganan pengecualian selama konversi JSON ke array.
Anda dapat menemukan lebih banyak tentang fungsi ini di dokumentasi resmi online.
Konversi JSON ke Objek PHP
Program ini memiliki perubahan menit untuk tidak menyetel flag boolean ke fungsi PHP json_decode. Ini akan mengembalikan pohon objek PHP stdClass alih-alih array.
<?php
// JSON string in PHP Array
$jsonString = '{"name":"Lion"}';
$phpObject = json_decode($jsonString);
print $phpObject->name;
?>
Keluaran
Lion
Kesalahan umum selama konversi dari JSON ke Array
String JSON berikut adalah objek JSON yang valid dalam JavaScript, tetapi tidak di sini di PHP. Masalahnya adalah kutipan tunggal. Itu harus diubah menjadi tanda kutip ganda.
Jika Anda ingin melihat contoh JavaScript untuk membaca dan menampilkan data JSON, artikel tertaut memiliki kodenya.
<?php
// 1. key and value should be within double quotes
$notValidJson = "{ 'lion': 'animal' }";
json_decode($notValidJson); // will return null
// 2. without a quote is also not allowed
$notValidJson = '{ lion: "animal" }';
json_decode($notValidJson); // will return null
// 3. should not have a comma at the end
$notValidJson = '{ "lion": "animal", }';
json_decode($notValidJson); // will return null
?>
Bagaimana cara mengonversi JSON dengan bilangan bulat besar
Ini dapat dicapai dengan menyetel parameter bitmask dari konstanta JSON yang telah ditentukan sebelumnya.
Konstanta JSON_BIGINT_AS_STRING digunakan untuk mengonversi JSON dengan data yang memiliki bilangan bulat besar.
<?php
$jsonString = '{"largeNumber": 12345678901234567890123}';
var_dump(json_decode($jsonString, false, 512, JSON_BIGINT_AS_STRING));
?>
Keluaran
object(stdClass)#1 (1) {
["number"]=>
string(20) "12345678901234567890123"
}
Cara mendapatkan kesalahan saat menggunakan json_decode
Fungsi json_last_error() digunakan untuk mengembalikan detail tentang kejadian kesalahan terakhir. Contoh berikut menangani kemungkinan kasus kesalahan fungsi PHP JSON ini.
<?php
$jsonString = '{"Lion":101,"Tiger":102,"Crocodile":103,"Elephant":104}';
json_decode($jsonString);
switch (json_last_error()) {
case JSON_ERROR_DEPTH:
echo 'Error: Nesting limit exceeded.';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'Error: Modes mismatch.';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'Error: Unexpected character found.';
break;
case JSON_ERROR_SYNTAX:
echo 'Error: Syntax error, invalid JSON.';
break;
case JSON_ERROR_UTF8:
echo 'Error: UTF-8 characters incorrect encoding.';
break;
default:
echo 'Unexpected error.';
break;
}
?>
KEJUTAN! Konversi JSON ke Array dan Array ke JSON tidak simetris
<?php
$jsonString = '{"0": "No", "1": "Yes"}';
// convert json to an associative array
$array = json_decode($jsonString, true);
print json_encode($array) . PHP_EOL;
?>
Keluaran
["No","Yes"]
Objek PHP sekarang diubah menjadi array PHP. Anda mungkin tidak mengharapkannya.
Encode -> Decode -> Encode
Di atas tidak akan mengembalikan data ke bentuk aslinya.
Output dari decoding ke array PHP dan encoding dari array PHP tidak selalu simetris. Namun, output dari decoding dari objek stdClass dan encoding ke objek stdClass selalu simetris.
Jadi jika Anda memiliki rencana untuk melakukan konversi siklis antara array PHP dan string JSON, maka konversi dulu array PHP menjadi objek. Konversi JSON.
Lihat demo
Kembali ke Atas