Bagaimana cara mendapatkan data array json di php?

Json_decode() adalah fungsi bawaan di php yang digunakan untuk mengonversi string yang disandikan JSON ke variabel yang sesuai di php

Secara umum, json_decode digunakan untuk mengubah json menjadi array di PHP tetapi juga memiliki kegunaan lain

Sintaksis

json_decode(
    string $json,
    ?bool $associative = null,
    int $depth = 512,
    int $flags = 0
): mixed

Parameter

  • json. String JSON diteruskan untuk didekodekan ke variabel php. Fungsi ini hanya bekerja dengan string berenkode UTF-8
  • asosiasi. Ini adalah variabel boolean. Ketika true dilewatkan, objek JSON akan diubah menjadi array asosiatif;
  • kedalaman. Kedalaman nesting maksimum dari JSON yang akan didekodekan
  • bendera. Ini termasuk bitmask JSON_OBJECT_AS_ARRAY, JSON_BIGINT_AS_STRING,, JSON_THROW_ON_ERROR dan konstanta JSON lainnya

Kembali

Fungsi json_decode() menerjemahkan string JSON ke tipe PHP yang sesuai berdasarkan parameter

Ketika true, false, atau null diteruskan untuk JSON, fungsi mengembalikan true, false, atau null yang sama. Jika JSON gagal didekodekan atau JSON lebih dalam dari kedalaman yang diberikan maka null akan dikembalikan

Cara mendekode json ke array di PHP

Contoh

Keluaran

array(4) {
  ["John"]=>
  int(20)
  ["Harry"]=>
  int(30)
  ["Dave"]=>
  int(40)
  ["Tony"]=>
  int(50)
}
_

Cara mendekode json ke objek di PHP

Jika Anda tidak memberikan parameter kedua, atau memberikan false, json_decode() akan mengurai JSON ke objek stdClass karena itu Anda dapat menggunakan notasi panah "→" untuk mengakses properti objek

Contoh

Keluaran

Kesimpulan

Inilah penjelasan sederhana tentang cara kerja json_encode() dan bagaimana Anda dapat mengurai json ke array atau objek kelas di PHP

Dokumen JSON dapat membuat objek JSON bersarang di dalam objek JSON lainnya. Objek JSON adalah pasangan nilai kunci dan ada metode berbeda yang dapat Anda gunakan untuk mengakses objek JSON dari dokumen JSON bersarang. Salah satu metodenya adalah menggunakan rekursi seperti Anda mengakses data dari susunan bersarang atau struktur data pohon. Metode lain adalah dengan menggunakan loop. Mari kita lihat beberapa contoh untuk mengakses data dokumen JSON bersarang seperti di bawah ini

[{
	"id": 1,
	"name": "Max Adams",
	"born": "21 Oct 2001",
	"cars": [
		{"make": "Mercedes", "model": "GLS"	},
		{"make": "Audi", "model": "Q8" }
		],
	"favourite": { "colour": "Blue", "movie": "Toy Story" }
},
{
	"id": 2,
	"name": "Steven Miller",
	"born": "28 Jul 2004",
	"cars": [
		{"make": "Tesla", "model": "Model S"}
        ],
	"favourite": { "colour": "Red", "movie": "Mulan" }
},
{
	"id": 3,
	"name": "Daniel James",
	"born": "18 Dec 2005",
	"cars": [
		{"make": "Bugatti", "model": "Chiron"}
		],
	"favourite": { "colour": "Yellow", "movie": "Frozen", "toy": "Teddy" }
}]

Membaca JSON

Pertimbangkan bahwa contoh JSON kami disimpan dalam file bernama "persons. txt". Pertama baca isi file teks ke dalam variabel string menggunakan fungsi

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
4 dan kemudian gunakan fungsi
foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
5 untuk mengonversi string JSON ke variabel PHP

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);

Perhatikan bahwa argumen kedua dalam fungsi

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
_6 diatur ke
foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
7 sehingga objek yang dikembalikan akan menjadi array asosiatif

Untuk detail lebih lanjut tentang mem-parsing JSON di PHP, baca Cara mem-parse JSON di PHP

Mengakses objek di dalam array JSON

Untuk mengakses objek di dalam array JSON, metode paling sederhana dan termudah adalah dengan menggunakan

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
8 loop untuk beralih melalui elemen array dan mengambil data yang Anda butuhkan. Misalnya, untuk mencetak semua nama dan nomor id dari contoh dokumen JSON kita

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }

Ini akan menghasilkan

2, Steven Miller
3, Daniel James

Mengakses objek Bersarang di dalam larik JSON

Nilai JSON bisa berupa objek JSON lainnya. Dalam contoh JSON kami, ada tiga objek JSON yang masing-masing sesuai dengan detail tentang seseorang. Untuk setiap orang, ada kunci bernama favorite yang nilainya adalah objek JSON lainnya. Anda dapat mengakses objek JSON dalam ini seperti halnya Anda mengakses larik asosiatif multidimensi

Untuk mencetak semua nama dan warna favorit yang sesuai

foreach($json as $elem)  {
   echo( $elem['name']." - ".$elem['favourite']['colour'] );
   echo("
"); }

Keluaran

Max Adams - Blue
Steven Miller - Red
Daniel James - Yellow

Mengakses array JSON di dalam JSON bersarang

Jika Anda memiliki larik di dalam objek JSON bersarang, gunakan dua

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
8 loop untuk mengakses elemen larik dalam

Untuk mencetak semua nama dan mobil yang sesuai

foreach($json as $elem)  {
   echo( $elem['name']. " : " );
   foreach ($elem['cars'] as $car ) {
      echo($car['make']. ", ");
   }
   echo("
"); }

Keluaran

Max Adams : Mercedes, Audi,
Steven Miller : Tesla,
Daniel James : Bugatti,

Berikut adalah contoh lain untuk mencetak jumlah mobil yang dimiliki setiap orang

foreach($json as $elem)  {
   echo( $elem['name'].": ".count($elem['cars']));
   echo("
"); }

Keluaran

Max Adams: 2
Steven Miller: 1
Daniel James: 1

Telusuri JSON bersarang berdasarkan nilai

Sejauh ini, kita telah melihat cara mengakses semua objek pada level tertentu. Sekarang kita belajar cara mencari JSON bersarang untuk nilai tertentu

Contoh pertama kami adalah menemukan semua orang yang memiliki 'Tesla' dari sampel JSON kami

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
0

Keluaran

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
1

Pada contoh selanjutnya, kita mencari orang yang menyukai warna 'Biru'

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
2

Keluaran

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
_3

Cari JSON bersarang dengan kunci

Dalam contoh berikut ini kami mencari kunci, bukan nilai. Misalnya untuk mencari orang yang memiliki mainan kesukaan

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
_4

Keluaran

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
5

Secara rekursif mendapatkan semua kunci dan nilai

Sekarang kita melihat metode lain untuk mengakses data dari JSON bersarang - Rekursi. Dalam metode ini kami membuat fungsi yang memanggil dirinya sendiri hingga kondisi tertentu terpenuhi

Mari kita mulai dengan cuplikan kode sederhana untuk mencetak semua kunci dan nilai dalam contoh dokumen JSON kita

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
_6

Dalam kode di atas, fungsi

2, Steven Miller
3, Daniel James
_0 memanggil dirinya sendiri jika nilainya adalah array, sebaliknya mencetak kunci dan nilai

Keluaran

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
_7

Cari berdasarkan Kunci ATAU Nilai Secara Rekursif

Anda dapat mencari secara rekursif berdasarkan kunci atau nilai di dalam JSON bersarang dengan sedikit modifikasi pada kode di atas. Yang Anda butuhkan hanyalah mendefinisikan fungsi yang membutuhkan dua argumen - larik dan Kunci/Nilai. Anda kemudian menjalankan rekursi yang sama seperti sebelumnya tetapi Anda memiliki

2, Steven Miller
3, Daniel James
1 kondisi lain untuk memeriksa kunci/nilai yang ditentukan

Berikut adalah contoh untuk mendapatkan semua model mobil

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
_8

Keluaran

$filepath = './persons.txt';
$json_string = file_get_contents($filepath);
$json = json_decode($json_string, true);
_9

Demikian pula, Anda dapat mencari nilai. Misalnya, untuk menemukan semua orang yang lahir pada tanggal tertentu

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
0

Keluaran

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
1

Cari berdasarkan Kunci DAN Nilai Secara Rekursif

Pada contoh sebelumnya, Anda menelusuri kunci atau nilai dan menggemakan pasangan nilai kunci tersebut saat ditemukan. Namun, sebagian besar waktu Anda mungkin ingin menelusuri kunci atau nilai dan menggemakan simpul Induknya atau pasangan nilai kunci yang berbeda. Misalnya, Anda ingin mencari tanggal dan menggemakan nama orang yang lahir pada tanggal tersebut. Atau, cari mobil dan cari orang yang punya mobil itu. Inilah fungsi untuk melakukan itu

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
2

Keluaran

foreach($json_array as $elem)  {
   echo($elem['id']. ", ".$elem['name'] );
   echo("
"); }
_3

PHP juga menyediakan beberapa fungsi array bawaan untuk mendapatkan data dari JSON bersarang, setelah string JSON didekodekan ke objek PHP. Hal ini akan kita bahas pada postingan selanjutnya

Bagaimana cara mengekstrak data dari JSON di PHP?

Membaca JSON Dari File atau String di PHP . Setelah data berada dalam string, Anda dapat memanggil fungsi json_decode() untuk mengekstrak informasi dari string .

Bagaimana cara mendapatkan kunci dan nilai dari objek array JSON di PHP?

secara default, json_decode menampilkan elemen sebagai objek, jika Anda ingin array asosiatif sebagai gantinya, gunakan json_decode($string, true) – Kaddath. 4 Januari 2018 pukul 12. 28
$val Anda adalah sebuah array (lihat struktur json). Anda juga memerlukan loop dalam seperti foreach ($val as $item){ // kode Anda} – YvesLeBorg

Bagaimana cara mendapatkan data posting JSON di PHP?

Kirim data JSON melalui POST dengan PHP cURL .
Tentukan URL ( $url ) tempat data JSON akan dikirim
Mulai sumber daya cURL baru menggunakan curl_init()
Siapkan data dalam larik PHP dan enkode menjadi string JSON menggunakan json_encode()
Lampirkan data JSON ke kolom POST menggunakan opsi CURLOPT_POSTFIELDS

Bagaimana cara mencetak array json_encode di PHP?

$c = larik(larik(1,2,3)); . ", json_encode($c), "\n"; echo "Output array non-asosiatif sebagai objek. ", json_encode($c, JSON_FORCE_OBJECT), "\n\n"; $d = array('foo' => 'bar', 'baz' => 'panjang');