Maison  >  Article  >  développement back-end  >  Comparez les différences entre json_encode et json_decode

Comparez les différences entre json_encode et json_decode

巴扎黑
巴扎黑original
2017-07-20 17:22:442123parcourir

Quatre principes de base de JSON

1) Les données parallèles sont séparées par des virgules (,)
2) Le mappage est représenté par (":") deux points
3 ) La collection (données) de données parallèles est représentée par des crochets ("[]")
4) La collection (objet) mappée est représentée par des accolades ("{}")

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 :

$json = '{"a":1,"b":2 ,"c" :3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true)); 🎜>


L'exemple ci-dessus affichera :

Copiez le code comme suit :

object(stdClass)#1 ( 5) {

["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] => ) )

On peut voir que les objets compilés par json_decode() sont maintenant générés sous la forme json_decode ($ data,true) Essayez



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

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 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('',"'bar'",'"baz"','&blong&', "xc3xa9"); " n" ;
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 :

Copiez le code comme suit :



Normal : ["","'bar'",""baz"","&blong&","u00e9"]

Tags : ["u003Cfoou003E","'bar'",""baz"","&blong&","u00e9"]

Apos : ["","u0027baru0027",""baz"" ,"&blong& ","u00e9"]

Quot : ["","'bar'","u0022bazu0022","&blong&","u00e9"]

Amp : ["Unicode : ["","'bar'",""baz"","&blong& "," é"]
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

Copiez le code comme suit :



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'

$obj->Contno= '000 ';

echo json_encode($obj);



Le résultat est :

Copiez le code comme suit :



{" Name":"a1",

"Number":"123",

"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.

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 :


$json = '{"a":1,"b":2 ,"c" :3,"d":4,"e":5}';
var_dump(json_decode($json));

var_dump(json_decode($json, true)); 🎜>

L'exemple ci-dessus affichera :


Copiez le code comme suit :


object(stdClass)#1 (5) {
[" a"] => int(1)
["b"] => int(2)

["c"] => int(3)
["d"] => int( 4)
["e"] => int(5)

}

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 :


Copiez le code comme suit :

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)

Copiez le code comme suit :

echo json_decode($data,true);


Résultat :

Copiez le code comme suit :

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);
?>

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 :

$a = array (' ',"'bar'",'"baz"','&blong&', "xc3xa9");

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 : ["","'bar'",""baz"","&blong&","u00e9"]
Tags : ["u003Cfoou003E","'bar' ",""baz"","&blong&","u00e9"]
Apos : ["","u0027baru0027",""baz"","&blong&","u00e9"]
Quot : ["","'bar'","u0022bazu0022","&blong&","u00e9"]
Amp : ["","'bar'",""baz "","u0026blongu0026","u00e9"]
Unicode : ["","'bar'",""baz"","&blong&","é"]
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"}


Exemple n°3 Exemple de tableaux continus et non continus

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 :

Tableau continu
array(4) {
[0]=>

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 :

Copiez le code comme suit :

{"Nom":"a1",

"Numéro":"123",
"Contno":"000"
}

On peut voir que json_encode() et json_decode() sont des 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 le ferez. obtenir des caractères nuls ou nuls.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn