Penanganan JSON dengan PHP: Cara Encode, Write, Parse, Decode dan Convert

oleh Vincy. Terakhir diubah pada 16 Mei 2021.

JSON adalah salah satu format data populer di semua teknologi. Penanganan JSON dengan PHP lebih mudah dari yang terlihat. Sebagian besar API menggunakan format JSON untuk pertukaran data. Misalnya, jika Anda ingin mengekstrak data profil dari Facebook menggunakan API-nya, ia mengembalikan data dalam format JSON. Tidak ada opsi untuk mengabaikan JSON.

Data dalam format JSON dapat dibaca dan diurai dengan mudah dibandingkan dengan format data lainnya. Ada banyak fungsi inti untuk penanganan JSON dengan PHP.

Fungsi bawaan tersebut digunakan untuk mengkodekan, menulis, mengurai, mendekode, dan mengonversi data JSON. Fungsi-fungsi PHP yang telah ditentukan sebelumnya membuat pekerjaan kita lebih mudah.

JSON

Apa itu JSON?

JSON adalah format teks pertukaran data universal yang merupakan singkatan dari Notasi Objek JavaScript. Ini adalah format data yang tidak bergantung pada bahasa.

Keterbacaan manusia dan mesin tinggi untuk format data JSON. Dalam format ini, struktur data dapat berupa dua format struktural yaitu berupa objek atau larik.

Format Data Objek JSON

Objek JSON berisi larik asosiatif dari pasangan “nama: nilai” sedangkan larik JSON berisi urutan nilai dengan indeks numerik default.

JSON dikembangkan dari bahasa pemrograman JavaScript dan ECMAScript. Standar ECMA-404 berisi spesifikasi untuk sintaks JSON yang valid.

Contoh Objek dan Array JSON

Dalam pengantar JSON, kami melihat bahwa formatnya dapat bervariasi berdasarkan struktur data. Mari kita lihat contoh untuk dua objek dan array format JSON ini.

Contoh Objek JSON yang valid

Format objek JSON terdiri dari kumpulan data pasangan nilai kunci. Struktur di bawah ini menunjukkan contoh struktur objek JSON yang valid.

{
    "FIFA_World_Cup_Winners" : {
        "2018" : "France",
        "2014" : "Germany",
        "2010" : "Spain",
        "2006" : "Italy",
        "2002" : "Brazil"
     }
}

Contoh Array JSON

Dalam array JSON, urutan data akan dicantumkan dalam daftar berurutan. Tidak akan ada pemetaan nilai kunci. Contoh berikut menunjukkan struktur array JSON.

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}

Dalam contoh JSON di atas, lima negara pemenang terakhir terdaftar tanpa indeks eksplisit. Jadi itu akan diperlakukan sebagai array dari daftar item yang dipesan.

Array JSON akan diapit dengan [ square brackets ] sedangkan objek JSON diapit dengan { kurung kurawal }

Penanganan JSON dengan PHP dengan Parsing Data File

Dengan referensi tentang kemungkinan struktur JSON, sekarang kita akan melihat tentang penanganan JSON dengan PHP untuk mengurai data dari file input yang berisi data JSON seperti yang ditunjukkan di bawah ini.

{
	"FIFA_World_Cup_finals":
	[ 
		{
			"Year": "2018",
			"data": 
			{
				"Winner": "France",
				"Score": "4-2",
				"Runner-up": "Croatia"
			}
		},
	    {
			"Year": "2014",
			"data": 
			{
				"Winner": "Germany",
				"Score": "1-0",
				"Runner-up": "Argentina"
			}
		},
	    {
			"Year": "2010",
			"data": 
			{
				"Winner": "Spain",
				"Score": "1-0",
				"Runner-up": "Netherlands"
			}
		}
	]
}

Lewati jalur file ini ke fungsi file_get_contents() PHP dan simpan data JSON ke dalam variabel.

Karena file JSON input berisi data struktural hierarkis multi-level, kita harus mengulangi objek JSON secara rekursif menggunakan PHP RekursifArrayIterator.

RecursiveArrayIterator PHP menyederhanakan implementasi parsing JSON dengan beberapa baris kode seperti yang ditunjukkan di bawah ini. Anda harus menyadari dan memanfaatkan kekuatan fungsi bawaan PHP.

<?php 
$JSON = file_get_contents("input.json");
$jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($JSON, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);

foreach ($jsonIterator as $key => $val) {
    if(!is_array($val)) {
        if($key == "Year") {
            print "<br/>";
        }
    print $key."    : ".$val . "<br/>";
    }
}
?>

Kemudian, program parsing PHP JSON ini akan mengembalikan output berikut ke browser.

Mengurai File JSON dengan Output PHP

Cara Mendekode JSON ke Array

Pada tutorial sebelumnya, kita telah melihat cara encode-decode JSON menggunakan PHP. Fungsi json_encode dan json_decode PHP digunakan untuk melakukan operasi encode dan decode masing-masing.

Blok kode berikut menunjukkan sintaks dari fungsi json_decode. Fungsi ini menerima input string JSON sebagai parameter pertamanya. Juga, ia menerima nilai boolean opsional sebagai parameter kedua.

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

Dengan mengirimkan TRUE ke parameter opsional ini, hasil decoding akan dikembalikan dalam bentuk array, bukan objek. Nilai default param ini adalah FALSE seperti yang ditentukan dalam sintaks.

Perhatikan input data JSON berikut. Mari kita lihat bagaimana itu diterjemahkan ke dalam array menggunakan fungsi json_decode().

<?php 
$JSON = '{
    "FIFA_Last_World_Cup_final":
    {
        "Year": "2018",
        "data":
        {
            "Winner": "France",
            "Score": "4-2",
            "Runner-up": "Croatia"
        }
    }
}';

$outputArray = json_decode($JSON, TRUE);

print "<PRE>";
print_r($outputArray);
?>

Array keluaran adalah,

Menyerahkan JSON dengan PHP untuk Decode menjadi Array

Decode JSON ke Object

Secara default, PHP json_decode fungsi akan mengubah data JSON menjadi objek. Parameter $assoc dari fungsi json_decode akan memaksa format output berdasarkan nilai boolean yang diteruskan ke sana.

Dalam contoh di atas, dengan menghapus parameter kedua kita bisa mendapatkan data yang didekodekan dalam bentuk objek. Kode konversi JSON ke Object dan hasilnya ditunjukkan di bawah ini.

<?php 
$JSON = '{
    "FIFA_Last_World_Cup_final":
    {
        "Year": "2018",
        "data":
        {
            "Winner": "France",
            "Score": "4-2",
            "Runner-up": "Croatia"
        }
    }
}';

$outputObject = json_decode($JSON);

print "<PRE>";
print_r($outputObject);
?>

Output Konversi JSON ke Objek

Konversi JSON ke Objek menggunakan PHP

Konversi Array PHP ke JSON

Untuk mengonversi array PHP ke format JSON, fungsi json_encode() digunakan. Cuplikan kode berikut menentukan sintaks fungsi PHP json_encode().

json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] ) : string

Fungsi ini menerima input yang disandikan JSON sebagai parameter pertamanya. Itu harus ditentukan secara wajib dengan string JSON saat menjalankan json_encode untuk memproses konversi data.

Script PHP di bawah ini digunakan untuk mengubah array PHP menjadi format JSON. Dalam contoh ini, saya telah menggunakan array asosiatif yang akan dikirim ke fungsi json_encode.

<?php 
$inputArray = array (
            "FIFA_Last_World_Cup_final" => array (
                    "Year" => "2018",
                    "data" => array ( "Winner" => "France", "Score" => "4-2", "Runner-up" => "Croatia")
                )
            );

$encodedJSON = json_encode($inputArray, JSON_PRETTY_PRINT);

print($encodedJSON);
?>

Dengan menjalankan program ini, data JSON yang di-encode akan tercetak di browser seperti gambar di bawah ini.

{ "FIFA_Last_World_Cup_final": { "Year": "2018", "data": { "Winner": "France", "Score": "4-2", "Runner-up": "Croatia" } } }

catatan:

  1. Itu pilihan parameter fungsi encode/decode PHP JSON akan menerima konstanta JSON. Perilaku konstanta JSON dijelaskan pada halaman eksternal tertaut.
  2. Fungsi decode encode PHP JSON akan bekerja dengan string berformat UTF-8.

Baca JSON melalui AJAX dan Proses

Pada bagian ini, kita akan melihat tentang penanganan JSON dengan PHP dan AJAX. Saya telah menggunakan JavaScript untuk mengirim panggilan AJAX ke PHP melalui permintaan HTTP XML.

Tambahkan skrip di bawah ini pada halaman HTML dari mana Anda ingin mengakses data JSON yang dikembalikan oleh PHP.

Panggilan balik AJAX akan mendapatkan respons JSON dari titik akhir PHP. Dalam contoh ini, titik akhir PHP ditetapkan sebagai URL AJAX JavaScript dengan menyetel parameter tindakan dalam string kueri URL. Ini memanggil getJSON.php file melalui AJAX.

<script type="text/javascript">
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == XMLHttpRequest.DONE) {   // XMLHttpRequest.DONE == 4
           if (xmlhttp.status == 200) {
               var JSONResponse = JSON.parse(xmlhttp.responseText);
               document.write("<u>Year: "+JSONResponse.FIFA_Last_World_Cup_final.Year+"</u><br/><br/>");
               document.write("Winner: "+JSONResponse.FIFA_Last_World_Cup_final.data.Winner+"<br/>");
               document.write("Score: "+JSONResponse.FIFA_Last_World_Cup_final.data.Score+"<br/>");
               document.write("Runner: "+JSONResponse.FIFA_Last_World_Cup_final.data.Runner+"<br/>");
           }
           else {
               alert('Problem in parsing JSON data via AJAX');
           }
        }
    };

    xmlhttp.open("GET", "getJSON.php?action=getJSON", true);
    xmlhttp.send();
</script>

Output JSON yang dikembalikan diterima di in perubahan status siap pakai panggilan balik. Data keluaran ini diuraikan dengan metode JSON.parse dari JavaScript.

Dalam skrip PHP, data JSON dikembalikan ke AJAX dengan menggunakan pernyataan cetak PHP. Sebelum membuat data JSON keluaran, ia memeriksa parameter tindakan yang diperlukan yang dikirim melalui AJAX tidak kosong.

<?php 
if(!empty($_POST["action"])) {
$inputArray = array (
            "FIFA_Last_World_Cup_final" => array (
                    "Year" => "2018",
                    "data" => array ( "Winner" => "France", "Score" => "4-2", "Runner" => "Croatia")
                )
            );

$encodedJSON = json_encode($inputArray, JSON_PRETTY_PRINT);

print($encodedJSON);
exit;
}
?>

Skrip AJAX ini memproses respons JSON dalam fungsi panggilan balik yang berhasil. Dalam panggilan balik ini, data JSON yang dibaca digunakan untuk memperbarui UI. Outputnya akan ditampilkan seperti di bawah ini.

Baca JSON melalui AJAX Output

Cara Mengakses Umpan JSON dan Menampilkan Data

Mengakses URL feed JSON dapat dilakukan dengan berbagai cara. Pada contoh di atas tentang penguraian data file JSON melalui PHP, kita telah menggunakan fungsi file_get_contents().

File_get_contents() tidak akan bekerja di server karena perintah keamanan diaktifkan dengan konfigurasi PHP.ini. Jadi, kita juga dapat menggunakan skrip CURL untuk mengekstrak data JSON dari URL umpan jarak jauh.

Contoh berikut akan menunjukkan cara menggunakan PHP CURL untuk mengakses feed JSON dan menampilkan data ke browser.

<?php 
$JSON_feed_URL = "pathinput.json";
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $JSON_feed_URL);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);

curl_close($ch);
$outputArray = json_decode($response);

print "<PRE>";
print_r($outputArray);
exit;
?>

Bagaimana Mengonversi JSON ke Objek JavaScript

Kita telah melihat bagaimana mengonversi JSON ke Objek JavaScript sambil membuat contoh penanganan JSON dengan PHP melalui AJAX tanpa jQuery.

Di bagian ini, kita akan melihat cara mengubah data JSON menjadi Objek JavaScript. Juga, kita harus mengulang melalui array Objek Javascript yang dihasilkan.

Konversi JSON ke Objek JavaScript dapat dilakukan dengan menggunakan berbagai cara. Seperti contoh sebelumnya, kita dapat melakukan ini dengan menggunakan metode JSON.parse() bawaan JavaScript.

Menggunakan jQuery metode $.parseJSON akan mendukung konversi ini dan membuatnya bekerja di banyak browser web usang. Kode berikut menggunakan jQuery untuk mengonversi string input JSON menjadi Objek JavaScript.

 
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function() {
	var JSONInputData="{ "FIFA_World_Cup_finals": [ { "Year": "2018", "data": { "Winner": "France", "Score": "4-2", "Runner-up": "Croatia" } }, { "Year": "2014", "data": { "Winner": "Germany", "Score": "1-0", "Runner-up": "Argentina" } } ] }";
	var JSONObjectArray = $.parseJSON(JSONInputData);
	$("#status").html("View JavaScript object structure in the browser console");
	console.log(JSONObjectArray);
});
</script>
</head>
<body>
    <div id="status"></div>
</body>
</html>

Dengan menjalankan program ini, kita dapat melihat struktur objek JavaScript di jendela konsol browser seperti gambar di bawah ini.

Konversi Objek JSON ke JavaScript

Ulangi objek JSON menggunakan Javascript

Skrip berikut digunakan untuk mengulang larik objek Javascript yang dikonversi dari data JSON. Dalam contoh ini, saya telah menggunakan loop bersarang untuk mengurai data JSON multi-level.

 
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function() {
	var JSONInputData="{ "FIFA_World_Cup_finals": [ { "Year": "2018", "data": { "Winner": "France", "Score": "4-2", "Runner-up": "Croatia" } }, { "Year": "2014", "data": { "Winner": "Germany", "Score": "1-0", "Runner-up": "Argentina" } } ] }";
	var JSONObjectArray = $.parseJSON(JSONInputData);
    for (var key in JSONObjectArray["FIFA_World_Cup_finals"]) {
            
          document.write("<br/><u>" + JSONObjectArray["FIFA_World_Cup_finals"][key]["Year"]+"</u><br/>");
          for (var k in JSONObjectArray["FIFA_World_Cup_finals"][key]["data"]) {
        	      document.write(k + ": " + JSONObjectArray["FIFA_World_Cup_finals"][key]["data"][k]+"<br>");
          }
    }
});
</script>

Konversikan Objek JavaScript ke JSON

Ini adalah proses kebalikan dari bagian di atas. JavaScript mendukung konversi ini dengan menggunakan built-in JSON.stringify metode. Di bagian ini mari kita lihat contoh kode untuk mempelajari cara menggunakan JSON.stringify dengan JavaScript.

<script>
var objectArray = {"FIFA_World_Cup_finals": [ 
        { 
            "Year": "2018", 
            "data": 
                { 
                    "Winner": "France", 
                    "Score": "4-2", 
                    "Runner-up": "Croatia" 
                } 
        }, 
        { 
            "Year": "2014", 
            "data": 
                { 
                    "Winner": "Germany", 
                    "Score": "1-0", 
                    "Runner-up": "Argentina" 
                } 
        } 
]};
var JSONStringData = JSON.stringify(objectArray);
document.write(JSONStringData);
</script>

Terlepas dari metode jQuery dan JavaScript JSON bawaan, ada perpustakaan yang tersedia untuk menangani JSON dengan kuat di sisi klien.

Misalnya, pustaka JSON-js adalah pustaka unggulan untuk mengurai JSON dengan berbagai metode. Juga, ini memberikan dukungan untuk proses dengan struktur siklus.

Bagaimana Cara Membaca JSON menggunakan jQuery?

Pada artikel ini, kita telah melihat cara mengakses data JSON melalui AJAX menggunakan Javascript. Di bagian ini, kita akan melihat cara mereplikasi kode AJAX jQuery yang sama untuk mengimplementasikannya.

Tambahkan skrip di bawah ini pada halaman tampilan tempat Anda menginginkan respons JSON dari PHP melalui AJAX. Dalam skrip ini, kita dapat melihat opsi dataType ditambahkan untuk menginisialisasi default jQuery AJAX.

Dengan spesifikasi ini Tipe data: ‘JSON’ panggilan balik AJAX bisa mendapatkan data berformat JSON dan memprosesnya. Dalam contoh ini, titik akhir PHP ditentukan dalam param URL AJAX. Ini memanggil getJSON.php file melalui AJAX.

<script src="https://phppot.com/php/json-handling-with-php-how-to-encode-write-parse-decode-and-convert/jquery-3.2.1.min.js"></script>
<script>
$(document).ready(function() {
    $.ajax({
        type: "POST", 
        data: "action=getjson",
        url: "getJSON.php", 
        dataType : "JSON",
        success: function(JSONResponse){
            document.write("<u>Year: "+JSONResponse.FIFA_Last_World_Cup_final.Year+"</u><br/><br/>");
            document.write("Winner: "+JSONResponse.FIFA_Last_World_Cup_final.data.Winner+"<br/>");
            document.write("Score: "+JSONResponse.FIFA_Last_World_Cup_final.data.Score+"<br/>");
            document.write("Runner: "+JSONResponse.FIFA_Last_World_Cup_final.data.Runner+"<br/>");
        }
    });
});
</script>

Kode PHP sama seperti yang kita gunakan pada contoh JSON AJAX sebelumnya tanpa jQuery. Lihat contoh di atas untuk melihat skrip PHP untuk mengembalikan JSON yang disandikan ke panggilan balik sukses jQuery AJAX.

Apa itu Fetch API?

Fetch API adalah antarmuka bawaan dalam JavaScript yang digunakan untuk mengambil data sumber daya dari berbagai sumber. Ini memungkinkan akses jarak jauh di seluruh jaringan untuk mengambil sumber daya.

Fetch API terdiri dari objek request-response yang digunakan masing-masing untuk mengirim params fetch dan mendapatkan response body.

Cara Menggunakan API Pengambilan JavaScript untuk Mendapatkan JSON

Untuk mengambil data JSON dengan menggunakan FetchAPI, jalur sumber daya JSON harus diteruskan ke fungsi fetch(). Kode di bawah ini menunjukkan cara menggunakan JavaScript Fetch SPI untuk mendapatkan data JSON dari sebuah file.

<script>
//Pass JSON feed URL
fetch('input.json')
.then(response => {
  return response.json();
}).then(data => {
  // Handle response JSON
  console.log(data);
});
</script>

Penanganan dan Pengujian Kesalahan JSON

Saat memproses penanganan JSON dengan PHP, mungkin ada kemungkinan terjadinya kesalahan karena beberapa alasan. Misalnya sintaks JSON yang tidak tepat, melebihi batas kedalaman dan banyak lainnya.

Jika kesalahan terjadi, maka fungsi PHP JSON akan mengembalikan NULL. Dalam kasus seperti itu, fungsi json_last_error() akan membantu untuk melacak dan menangani kesalahan. Fungsi ini akan mengembalikan nilai numerik yang mewakili kode kesalahan JSON.

Beberapa kode kesalahan JSON dan deskripsinya tercantum di bawah ini.

  • JSON_ERROR_NONE – Tidak ada kesalahan yang terjadi.
  • JSON_ERROR_DEPTH – Kedalaman tumpukan maksimum telah terlampaui.
  • JSON_ERROR_STATE_MISMATCH – Terjadi dengan underflow atau dengan ketidakcocokan mode.
  • JSON_ERROR_CTRL_CHAR – Mengontrol kesalahan karakter, mungkin salah dikodekan.
  • JSON_ERROR_SYNTAX – Kesalahan sintaks.
  • JSON_ERROR_UTF8 – Karakter UTF-8 yang salah format, mungkin salah dikodekan.
  • JSON_ERROR_UTF8 – Karakter UTF-8 yang salah format, mungkin salah dikodekan.

Kesimpulan

Lewatlah sudah hari-hari menangani dokumen XML kompleks yang tinggi. Markup skema yang sulit dan memanipulasinya tidak lagi diperlukan. API populer apa pun menggunakan dan menghasilkan data JSON. Ini nyaman dalam hal pemrosesan mesin dan pemahaman manusia.

JSON telah mengambil tempat yang lebih tinggi di dunia pertukaran data dan akan tetap ada selama adopsi meningkat dari hari ke hari. Poin penting yang ingin saya soroti adalah bahwa PHP memberikan dukungan tertinggi pada tingkat inti untuk menangani JSON.

Anda harus mengetahui fungsi-fungsi yang telah ditentukan sebelumnya dan memanfaatkannya sehingga kode Anda akan efisien. Artikel ini telah mengkonsolidasikan semua kasus penggunaan utama, implementasi dan skenario masalah dalam menangani JSON dengan PHP.

Semoga Anda menikmatinya. Tambahkan pengalaman Anda dengan JSON dan masukan berharga apa pun di formulir komentar di bawah.

Kembali ke Atas


Source link