Qu'est-ce que json ?
JSON (JavaScript Object Notation) est un format léger d'échange de données principalement utilisé pour transmettre des données.
JSON peut convertir un ensemble de données représenté dans un objet JavaScript en une chaîne, qui peut ensuite être facilement transmise entre fonctions, ou d'un client Web à un serveur dans un programme d'application asynchrone. Cette chaîne semble un peu bizarre, mais JavaScript peut facilement l'interpréter, et JSON peut représenter des structures plus complexes que des « paires nom/valeur ». Par exemple, des tableaux et des objets complexes peuvent être représentés plutôt que de simples listes de clés et de valeurs.
Ce chapitre est juste pour comprendre, pas besoin de se concentrer dessus.
Configuration de l'environnement
L'extension JSON a été intégrée dans php5.2.0 et versions ultérieures.
Fonction JSON
json_encode
PHP json_encode () est utilisé pour encoder des variables JSON. Cette fonction renvoie des données JSON si elle est exécutée avec succès, sinon elle renvoie FALSE.
Syntaxe
string json_encode ( $value [, $options = 0 ] )
Paramètres
· value : valeur à encoder. Cette fonction n'est valable que pour les données codées en UTF-8.
· options : Masque binaire composé des constantes suivantes : JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT
Instance
L'exemple suivant montre comment convertir un tableau PHP en données au format JSON :
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
Le résultat de l'exécution du code ci-dessus est :
{"a":1,"b":2 ,"c ":3,"d":4,"e":5}
L'exemple suivant montre comment convertir des objets PHP en données au 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); ?>
Le résultat de l'exécution de le code ci-dessus est :
{"name": "sachin", "hobbies": "sports", "birthdate": "08/05/1974 12:20:03 pm">
json_decode
La fonction PHP json_decode() est utilisée pour décoder les chaînes au format JSON et les convertir en variables PHP.
Syntaxe
json_decode mixte ($json [,$assoc = false [, $profondeur = 512 [, $options = 0 ]]])
Paramètres
· json_string : chaîne JSON à décoder, doit être une donnée codée en UTF-8
· assoc : lorsque ce paramètre est TRUE, il sera renvoyé Tableau, renvoie l'objet si FALSE.
· profondeur : paramètre de type entier, qui précise la profondeur de récursion
· options : masque binaire, actuellement seul JSON_BIGINT_AS_STRING est pris en charge.
Exemple
L'exemple suivant montre comment décoder les données JSON :
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
Le résultat de l'exécution du code ci-dessus est :
object(stdClass)#1 (5) {
["a"] =>
["b"] => int(2) ["c"] => int(3) ["d"] => ) ["e"] => int(5)} array(5) { [" a" ] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] =>int(4) ["e"] =>int(5)}Règles du format Json en PHP
- Les données parallèles sont séparées par des virgules ("", ") - Le mappage se fait par deux points ( ": ") représente
- une collection (tableau) de données parallèles est représentée par des crochets ("[]")
- une collection mappée (objet) est représentée par des accolades ("{}" )
« Pékin a une superficie de 16 800 kilomètres carrés et une population permanente de 16 millions d'habitants. Shanghai a une superficie de 6 400 kilomètres carrés et une population permanente de 18 millions d'habitants. ":1600},
{"City" ":"Shanghai","Area":6400,"Population":1800}
]
Fonction pour faire fonctionner json en PHP
Cryptage json_encode
Déchiffrer json_decode
Conversion d'un tableau unidimensionnel au format de données json<?php $arr_1 = array(); $arr_1['username'] = 'lisi'; $arr_1['age'] = 20; echo json_encode($arr_1);//{"username":"lisi","age":20} ?>Conversion d'un tableau multidimensionnel au format de données 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}}}
?>
Conversion d'objets au format de données json
Lorsque les objets sont convertis en données json, seules les variables publiques sont converties, les variables privées ne sont pas converties
<?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"} ?>
Convertir le format de données json en type d'objet
<?php $jsonStr = '{"key1":"value1","key2":"value2"}'; print_r(json_decode($jsonStr,false));//stdClass Object ( [key1] => value1 [key2] => value2 ?>Convertir le format de données json en type de tableau
<?php
$jsonStr = '{"key1":"value1","key2":"value2"}';
print_r(json_decode($jsonStr,true));//Array ( [key1] => value1 [key2] => value2 )
?>
json_decode($jsonStr ,true); Si le deuxième paramètre est vrai, le résultat sera converti en type de tableau. Le paramètre par défaut est false et est converti en. objet
par défaut.section suivante