PHP JSON
Apakah itu json?
JSON (JavaScript Object Notation) ialah format pertukaran data ringan yang digunakan terutamanya untuk menghantar data.
JSON boleh menukar set data yang diwakili dalam objek JavaScript kepada rentetan, yang kemudiannya boleh dihantar dengan mudah antara fungsi atau daripada klien web kepada pelayan dalam program aplikasi tak segerak. Rentetan ini kelihatan agak pelik, tetapi JavaScript boleh mentafsirnya dengan mudah dan JSON boleh mewakili struktur yang lebih kompleks daripada "pasangan nama/nilai". Sebagai contoh, tatasusunan dan objek kompleks boleh diwakili dan bukannya senarai mudah kunci dan nilai.
Bab ini hanya untuk pemahaman, tidak perlu fokus padanya.
Konfigurasi persekitaran
Pelanjutan JSON telah terbina dalam dalam php5.2.0 dan ke atas.
Fungsi JSON
json_encode
PHP json_encode () digunakan untuk mengekod pembolehubah JSON Fungsi ini mengembalikan data JSON jika berjaya dilaksanakan, jika tidak ia mengembalikan FALSE.
Sintaks
rentetan json_encode ( $value [, $options = 0 ] )
Parameter
· nilai: Nilai yang akan dikodkan. Fungsi ini hanya sah untuk data yang dikodkan UTF-8.
· pilihan: Topeng binari yang terdiri daripada pemalar berikut: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
Hasil pelaksanaan kod di atas ialah:
{"a":1,"b":2 ,"c ":3,"d":4,"e":5}
Contoh berikut menunjukkan cara menukar objek PHP kepada data format JSON:
<?php class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e); ?>
Hasil pelaksanaan bagi kod di atas ialah:
{"name":"sachin","hobi":"sukan","birthdate":"08/05/1974 12:20:03 pm"}
json_decode
Fungsi json_decode() PHP digunakan untuk menyahkod rentetan format JSON dan menukarnya kepada pembolehubah PHP.
Sintaksjson_decode bercampur ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
<数>Parameter
· JSON_STRING: Rentetan JSON yang hendak dinyahkod mestilah data pengekodan UTF-8
· assoc: Apabila parameter ini benar, ia akan kembali ke return. Array, mengembalikan objek jika FALSE. · kedalaman: parameter jenis integer, yang menentukan kedalaman rekursi · pilihan: topeng binari, pada masa ini hanya JSON_BIGINT_AS_STRING yang disokong.Contoh
Contoh berikut menunjukkan cara menyahkod data JSON:
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
Hasil pelaksanaan kod di atas ialah:
objek(stdClass)#1 (5) {
["a"] =>
["b"] => int(2) ["c"] => ) ["e"] => int(5)} array(5) { [" a" ] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => >Peraturan format Json dalam PHP - Data selari dipisahkan dengan koma (", ")- Pemetaan dilakukan oleh titik bertindih ( ": ") mewakili - koleksi (tatasusunan) data selari diwakili oleh kurungan segi empat sama ("[]") - koleksi (objek) yang dipetakan diwakili oleh kurungan kerinting ("{}" )
Ayat berikut:
"Beijing mempunyai keluasan 16,800 kilometer persegi dan penduduk tetap 16 juta. Shanghai mempunyai keluasan 6,400 kilometer persegi dan penduduk kekal 18 juta." Ia ditulis dalam format json seperti ini:
[
]
Penukaran tatasusunan satu dimensi kepada format data json
<?php $arr_1 = array(); $arr_1['username'] = 'lisi'; $arr_1['age'] = 20; echo json_encode($arr_1);//{"username":"lisi","age":20} ?>
Penukaran tatasusunan berbilang dimensi kepada format data json
<?php $arr_2 = array(); // 三维数组 $arr_2['member']['lisi']['job'] = "worker"; $arr_2['member']['lisi']['age'] = 30; $arr_2['member']['wangwu']['job'] = "student"; $arr_2['member']['wangwu']['age'] = 10; echo json_encode($arr_2); //{"member":{"lisi":{"job":"worker","age":30},"wangwu":{"job":"student","age":10}}} ?>
Penukaran objek ke dalam format data json
Apabila objek ditukar menjadi data json, hanya pembolehubah awam ditukar, pembolehubah peribadi tidak ditukar
<?php class Person{ public $name = "public name"; protected $ptName = "protected name"; private $pName = "private name"; public function sayName(){ return $this->name; } } $person1 = new Person(); echo json_encode($person1);//{"name":"public name"} ?>
Tukar format data json kepada jenis objek
<?php $jsonStr = '{"key1":"value1","key2":"value2"}'; print_r(json_decode($jsonStr,false));//stdClass Object ( [key1] => value1 [key2] => value2 ?>
Tukar format data json kepada jenis tatasusunan
<?php $jsonStr = '{"key1":"value1","key2":"value2"}'; print_r(json_decode($jsonStr,true));//Array ( [key1] => value1 [key2] => value2 ) ?>json_decode($jsonStr ,true); objek
secara lalai.