Maison > Article > développement back-end > Comparez les différences entre json_encode et json_decode
Quatre principes de base de JSON
1.json_decode()
json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_decode — pour les caractères au format JSON String encoding
Description
mixed json_decode ( string $json [, bool $assoc ] )
Accepte une chaîne au format JSON et la convertit en variable PHP
Paramètres
json
Une chaîne au format chaîne json à décoder.
assoc
Lorsque ce paramètre est TRUE, un tableau sera renvoyé à la place d'un objet.
Renvoie un objet ou si le paramètre facultatif assoc est VRAI, un tableau associatif est renvoyé à la place
Exemple
Exemple n°1 json_decode Exemple de () <.>
Copiez le code comme suit :
Copiez le code comme suit :
["a"] => int(1)
["b"] => int(2)["c"] => int(3) <🎜 />["d" ] => int(4)
["e"] => int(5)
}
array(5) {
["a" ] => (1)
["b"] => int(2)
["c"] => int(3)
["d"] => >["e"] => int(5)
}
Copiez le code comme suit :
$ data='[{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1" ,"Number": "123", "Contno": "000", "QQNo": ""}, {"Nom": "a1", "Number": "123", "Contno": "000", "QQNo": "}]';
echo json_decode($data);
Le résultat est :
Copiez le code comme suit :
Array ( [0] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Objet stdClass ( [Nom] => a1 [Numéro] => 123 [Contno] => 000 [QQNo] => ) [2] => Objet stdClass ( [Nom] => a1 [Numéro] => 123 [Contno] => 000 [QQNo] => ) )
Copiez le code comme suit :
echo json_decode($data,true); Résultat :
Copiez le code comme suit :
Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Tableau ( [Nom] => a1 [Numéro] => 123 [Contno] => 000 [QQNo] => ) [2] => Tableau ( [Nom] => a1 [Numéro] => 123 [Contno] => 000 [QQNo] => ) )
Il On peut voir que json_decode($data,true) génère un tableau associatif. On peut voir que json_decode($data) génère un objet et json_decode("$arr",true) le force à générer un tableau associatif PHP <.>
2.json_encode()
json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode — JSON la variable Encodage
string json_encode ( Mixed $value [, int $options = 0 ] )
Renvoie la forme JSON de la valeur
Signaler un bug Paramètres
valeur
La valeur à encoder peut être n'importe quel type de données sauf le type de ressource
Cette fonction ne peut accepter que 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, JSON_UNESCAPED_UNICODE
Signaler un bug Retour Si la valeur
est saisie avec succès. codé, un format JSON sera renvoyé. Représente une chaîne ou renvoie FALSE en cas d'échec.
Signaler un bug Journal de mise à jour
Description de la version
Le paramètre d'options 5.4.0 a ajouté des constantes : JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES et JSON_UNESCAPED_UNICODE.
5.3.3 Le paramètre options ajoute une constante : JSON_NUMERIC_CHECK.
5.3.0 Ajouter un paramètre d'options
Signaler un bug Exemple
Exemple n°1 Un exemple json_encode()
Copier le code As. suit :
$arr = tableau ('a'=>1,'b'=>2,'c'=>3,'d'=>4, 'e'=>5);
echo json_encode($arr);
?>
La routine ci-dessus affichera :
Copiez le code comme suit :
{"a":1,"b":2,"c":3,"d":4,"e":5 }
Exemple n°2 Utilisation du paramètre options dans la fonction json_encode()
Copiez le code comme suit :
< ;? php
$a = array('
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "n";
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "n";
echo " Unicode : ", json_encode($a, JSON_UNESCAPED_UNICODE), "n";
echo "Tous : ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "nn";
$ b = array();
echo "Sortie d'un tableau vide sous forme de tableau : ", json_encode($b), "n";
echo "Sortie d'un tableau vide sous forme d'objet : ", json_encode($ b, JSON_FORCE_OBJECT), "nn";
$c = array(array(1,2,3));
echo "Sortie de tableau non associatif sous forme de tableau : ", json_encode( $c ), "n";
echo "Sortie d'un tableau non associatif en tant qu'objet : ", json_encode($c, JSON_FORCE_OBJECT), "nn" ;
$d = array('foo' = > 'bar', 'baz' => 'long');
echo "Le tableau associatif est toujours affiché en tant qu'objet : ", json_encode($d), "n"; le tableau est toujours affiché en tant qu'objet : ", json_encode($d, JSON_FORCE_OBJECT), "nn";
?>
La routine ci-dessus affichera :
Normal : ["
Apos : ["
Amp : ["
Tous : ["u003Cfoou003E","u0027baru0027","u0022bazu0022","u0026blongu0026","é"]
Sortie du tableau vide sous forme de tableau : []
Vide sortie du tableau en tant qu'objet : {}
Sortie du tableau non associatif sous forme de tableau : [[1,2,3]]
Sortie du tableau non associatif en tant qu'objet : {"0":{"0" :1, "1":2,"2":3}}
Le tableau associatif est toujours affiché en tant qu'objet : {"foo":"bar","baz":"long"}
Associatif le tableau est toujours affiché en tant qu'objet : {"foo":"bar","baz":"long"}
Exemple n°3 Exemple de tableaux continus et non continus
echo "continuous array".PHP_EOL;
$sequential = array("foo", "bar" , "baz", " blong");
var_dump($sequential,
json_encode($sequential)
echo PHP_EOL."tableau non continu". PHP_EOL;
$nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong"); >$nonsequential,
json_encode($nonsequential)
);
echo PHP_EOL "Un tableau non continu généré en supprimant une valeur de tableau continue".PHP_EOL; [1]);
var_dump(
$sequential,
json_encode($sequential)
?> affichera :
Copiez le code comme suit :
Tableau continu
array(4) {
[0]=>
string(3) "foo"
[1]=> ) "bar"
[2]=>
string(3) "baz"
[3]=>
string(5) "blong"
}
string (27) "["foo","bar","baz","blong"]"
Tableau non continu
array(4) {
[1]=> 🎜 >string(3) "foo"
[2]=>
string(3) "bar"
[3]=> [ 4]=>
string(5) "blong"
}
string(43) "{"1":"foo","2":"bar","3":" baz ","4":"blong"}"
Un tableau non continu généré en supprimant une valeur de tableau continue
array(3) {
[0]=> string (3) "foo"
[2]=>
string(3) "baz"
[3]=>
string(5) "blong"
}
string(33) "{"0":"foo","2":"baz","3":"blong"}"
Copiez le code comme suit :
$obj->Name= 'a1';$obj->Number ='123'
echo json_encode($obj);
Le résultat est :
{" Name":"a1",
"Contno":"000"
}
Vous pouvez voir json_encode() et json_decode() sont le processus de compilation et de décompilation. Notez que json n'accepte que les caractères codés en utf-8, donc les paramètres de json_encode() doivent être codés en utf-8, sinon vous obtiendrez des caractères vides ou nuls.
Une chaîne au format chaîne json à décoder.
Lorsque ce paramètre est TRUE, un tableau sera renvoyé à la place d'un objet.
Renvoie un objet ou si le paramètre facultatif assoc est VRAI, un tableau associatif est renvoyé à la place
Exemple
Exemple n°1 json_decode Exemple de () <.>
Copiez le code comme suit :
$json = '{"a":1,"b":2 ,"c" :3,"d":4,"e":5}';
var_dump(json_decode($json));
Copiez le code comme suit :
object(stdClass)#1 (5) {
[" a"] => int(1)
["b"] => int(2)
}
array(5) {
["a"] => ["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
Copiez le code comme suit :
$data='[{"Name ":"a1"," Numéro":"123", "Contno": "000", "QQNo": ""}, {"Nom": "a1", "Numéro": "123", "Contno" : "000", "QQNo". ":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""}]';
echo json_decode($data) ;
Le résultat est :
Array ( [0] => stdClass Object ( [Name] = > a1 [Numéro] => 123 [Contno] => 000 [QQNo] => ) [1] => Objet stdClass ( [Nom] => a1 [Numéro] => 123 [Contno] => 000 [QQNo] => ) [2] => stdClass Objet ( [Nom] => a1 [Numéro] => 123 [Contno] => 000 [QQNo] = > ) ) 🎜>
On peut voir que l'objet compilé par json_decode() est un objet. Essayez maintenant de générer json_decode($data,true)
echo json_decode($data,true);
Résultat :
Array ( [ 0] => Tableau ( [Nom] => a1 [Numéro] => 123 [Contno] => 000 [QQNo] => ) [1] => Tableau ( [Nom] => a1 [Numéro] => 123 [Contrôle] => 000 [QQNo] => ) [2] => [QQNon] => ) )
Vous pouvez voir que json_decode($data,true) génère un tableau associatif. À partir de là, nous pouvons voir que json_decode($data) génère un objet et json_decode("$arr",true) le force à générer un objet. Tableau associatif PHP .
2.json_encode()
json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode — Oui Les variables sont codées en JSON
Signaler un bug Description
string json_encode ( Mixed $value [, int $options = 0 ] )
Renvoie la forme JSON de la valeur
Signaler un bug Paramètres
valeur
La valeur à encoder, à l'exception du type de ressource, peut être n'importe quel type de données
Cette fonction ne peut accepter que 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, JSON_UNESCAPED_UNICODE
Signaler un bug Valeur de retour
Renvoyez-en une si l'encodage est réussi. Une chaîne représentée comme JSON ou FALSE en cas d'échec.
Signaler un bug Journal de mise à jour
Description de la version
Constantes des paramètres d'options 5.4.0 ajoutées : JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES et JSON_UNESCAPED_UNICODE.
5.3.3 Le paramètre options ajoute une constante : JSON_NUMERIC_CHECK.
5.3.0 Ajouter un paramètre d'options
Signaler un bug Exemple
Exemple n°1 Un exemple json_encode()
Copiez le code comme suit :
$arr = tableau ('a'=>1,'b'=>2,'c'=>3,'d'=> 4,'e'=>5);
echo json_encode($arr);
?>
{"a":1,"b":2,"c":3,"d":4,"e":5}
$a = array ('
echo "Normal : ", json_encode($a), "n" ;
echo "Tags: ", json_encode($a, JSON_HEX_TAG), "n";
echo "Apos: ", json_encode($a, JSON_HEX_APOS), "n"; ", json_encode($a, JSON_HEX_QUOT), "n";
echo "Amp : ", json_encode($a, JSON_HEX_AMP), "n";
echo "Unicode : ", json_encode($a, JSON_UNESCAPED_UNICODE ), "n";
echo "Tous : ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "nn"; >
echo "Sortie d'un tableau vide sous forme de tableau : ", json_encode($b), "n";
echo "Sortie d'un tableau vide sous forme d'objet : ", json_encode($b, JSON_FORCE_OBJECT), "nn"; 🎜>
$c = array(array(1,2,3));
echo "Sortie d'un tableau non associatif sous forme de tableau : ", json_encode($c), "n"; >echo "Sortie d'un tableau non associatif en tant qu'objet : ", json_encode($c, JSON_FORCE_OBJECT), "nn"
$d = array('foo' => 'bar', 'baz' = > 'long');
echo "Le tableau associatif est toujours affiché en tant qu'objet : ", json_encode($d), "n";
echo "Le tableau associatif est toujours affiché en tant qu'objet : ", json_encode( $d) , JSON_FORCE_OBJECT), "nn";
?>
La routine ci-dessus affichera :
Copiez le code comme suit :
Normal : ["
Tags : ["u003Cfoou003E","'bar' ",""baz"","&blong&","u00e9"]
Apos : ["
Quot : ["
Amp : ["
Unicode : ["
Tous : [ "u003Cfoou003E","u0027baru0027","u0022bazu0022","u0026blongu0026","é"]
Sortie de tableau vide sous forme de tableau : []
Sortie de tableau vide en tant qu'objet : {}
Sortie d'un tableau non associatif sous forme de tableau : [[1,2,3]]
Sortie d'un tableau non associatif sous forme d'objet : {"0":{"0":1,"1":2,"2" :3}}
Le tableau associatif est toujours affiché en tant qu'objet : {"foo": "bar", "baz": "long"}
Le tableau associatif est toujours affiché en tant qu'objet : {"foo": bar","baz":"long"}
Copiez le code comme suit :
< ;?php
echo "tableau continu".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong"); $sequential,
json_encode($sequential)
);
echo PHP_EOL."tableau non continu".PHP_EOL;
$nonsequential = array(1=>"foo", 2=> "bar", 3=>"baz", 4=>"blong");
var_dump(
$non séquentiel,
json_encode($non séquentiel)
); 🎜>
echo PHP_EOL."Un tableau non continu généré en supprimant une valeur de tableau continue".PHP_EOL;
unset($sequential[1]); >json_encode($ sequential)
);
?>
La routine ci-dessus affichera :
Copiez le code comme suit :
string(3) "foo"
[1]=> "[ 2]=>
string(3) "baz"
[3]=> ,"bar","baz","blong"]"
non- tableau continu
array(4) {
[1]=>
string(3) "foo"
[2]=> >[3]=>
chaîne(3) "baz"
[4]=>
chaîne(5) "blong"
}
chaîne(43) "{" 1": "foo", "2": "bar", "3": "baz", "4": "blong "}"
Un tableau non continu généré en supprimant une valeur de tableau continu
array(3) {
[0]=>
string(3) "foo"
[2]=>
string(3) "baz"
[ 3]=>
string(5) "blong"
}
string(33) "{" 0":"foo","2":"baz","3":"blong "}"
Copiez le code comme suit :
$obj->Name= 'a1';$obj->Number =' 123';
$obj->Contno= '000';
echo json_encode($obj);
Le résultat est :
"Numéro":"123",
"Contno":"000"
}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!