Heim > Backend-Entwicklung > PHP-Tutorial > Vergleichen Sie die Unterschiede zwischen json_encode und json_decode

Vergleichen Sie die Unterschiede zwischen json_encode und json_decode

巴扎黑
Freigeben: 2023-03-13 21:06:02
Original
2156 Leute haben es durchsucht

Vier Grundprinzipien von JSON

1) Parallele Daten werden durch Kommas (,) getrennt
2) Die Zuordnung wird durch (:) Doppelpunkt dargestellt
3 ) Die Sammlung (Daten) paralleler Daten wird durch eckige Klammern („[]“) dargestellt
4) Die zugeordnete Sammlung (Objekt) wird durch geschweifte Klammern („{}“) dargestellt

1.json_decode()

json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_decode – für Zeichen im JSON-Format. Zeichenfolge Kodierung

Beschreibung
mixed json_decode ( string $json [, bool $assoc ] )
Akzeptiert eine JSON-Formatzeichenfolge und konvertiert sie in eine PHP-Variable

Parameter

json
Eine Zeichenfolge im JSON-Zeichenfolgenformat, die dekodiert werden soll.

assoc
Wenn dieser Parameter TRUE ist, wird ein Array anstelle eines Objekts zurückgegeben.


Gibt ein Objekt zurück, oder wenn der optionale assoc-Parameter TRUE ist, wird stattdessen ein assoziatives Array zurückgegeben

Beispiel

Beispiel Nr. 1 json_decode Beispiel für ()

Kopieren Sie den Code wie folgt:

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


Das obige Beispiel gibt Folgendes aus:


Kopieren Sie den Code wie folgt:

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"] =>(3)
["d"] => >["e"] => int(5)
}




Kopieren Sie den Code wie folgt:


$ data='[{"Name": "a1", "Nummer": "123", "Contno": "000", "QQNo": "}, {"Name": "a1", "Nummer": „123“, „Contno“: „000“, „QQNo“: „}, {“Name“: „a1“, „Number“: „123“, „Contno“: „000“, „QQNo“: "}]';

echo json_decode($data);



Das Ergebnis ist:

Kopieren Sie den Code wie folgt:

Array ( [0] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => stdClass-Objekt ( [Name] => a1 [Nummer] => 123 [Contno] => 000 [QQNo] => ) [2] => stdClass-Objekt ( [Name] => a1 [Nummer] => 123 [Contno] => 000 [QQNo] => ) )


Es ist ersichtlich, dass die von json_decode() kompilierten Objekte jetzt als json_decode ($ data,true) Versuchen Sie

Kopieren Sie den Code wie folgt:

echo json_decode($data,true)


Ergebnis:

Kopieren Sie den Code wie folgt:

Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Array ( [Name] => a1 [Number] => 000 [QQNo] => ) [2] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )


Es Es ist ersichtlich, dass json_decode($data,true) ein assoziatives Array ausgibt. Es ist ersichtlich, dass json_decode($data) ein Objekt ausgibt und json_decode("$arr",true) es zwingt, ein assoziatives PHP-Array
2.json_encode()

json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_encode – JSON die Variable Codierung

Fehler melden Beschreibung
string json_encode ( Mixed $value [, int $options = 0 ] )
JSON-Wertform zurückgeben

Fehler melden Parameter

Wert
Der zu kodierende Wert kann ein beliebiger Datentyp außer dem Ressourcentyp sein

Diese Funktion kann nur UTF-8-kodierte Daten akzeptieren

Optionen
Bestehende Binärmaske der folgenden Konstanten: 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.

Fehler melden Rückgabe Wenn der Wert
erfolgreich ist codiert, wird ein JSON-Format zurückgegeben. Stellt eine Zeichenfolge dar oder gibt bei einem Fehler FALSE zurück.

Fehler melden Aktualisierungsprotokoll
Versionsbeschreibung
5.4.0 Optionsparameterkonstanten hinzugefügt: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES und JSON_UNESCAPED_UNICODE.
5.3.3 Der Optionsparameter fügt eine Konstante hinzu: JSON_NUMERIC_CHECK.
5.3.0 Optionsparameter hinzufügen


Einen Fehler melden Beispiel

Beispiel Nr. 1 Ein json_encode()-Beispiel


Codecode kopieren als folgt:


$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4, 'e'=>5);

echo json_encode($arr>?>

Die obige Routine gibt aus:

Kopieren Sie den Code wie folgt:

{"a":1,"b":2,"c":3,"d":4,"e":5 }

Beispiel #2 Verwendung des Optionsparameters in der Funktion json_encode()

Kopieren Sie den Code wie folgt:

< ;? php
$a = array('',"'bar'",'"baz"','&blong&', "xc3xa9"); , json_encode ($a), „n“;
echo „Tags:“, json_encode($a, JSON_HEX_TAG), „n“;
echo „Apos:“, json_encode($a, JSON_HEX_APOS), „ 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 "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "nn";

$ b = array();

echo „Leeres Array, Ausgabe als Array:“, json_encode($b), „n“;
echo „Leeres Array, Ausgabe als Objekt:“, json_encode($ b, JSON_FORCE_OBJECT), „nn“;

$c = array(array(1,2,3));

echo „Nicht-assoziative Array-Ausgabe als Array:“, $c ), „n“;
echo „Nicht-assoziative Array-Ausgabe als Objekt:“, json_encode($c, JSON_FORCE_OBJECT), „nn“; > 'bar', 'baz' => 'long');

echo "Assoziatives Array immer als Objekt ausgeben: ", json_encode($d), "n"; Array wird immer als Objekt ausgegeben: ", json_encode($d, JSON_FORCE_OBJECT), "nn";
?>



Die obige Routine gibt Folgendes aus:


Kopieren Sie den Code wie folgt:


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& "," é"]
Alle: ["u003Cfoou003E","u0027baru0027","u0022bazu0022","u0026blongu0026","é"]

Leeres Array, Ausgabe als Array: []
Leer Array-Ausgabe als Objekt: {}

Nicht-assoziative Array-Ausgabe als Array: [[1,2,3]]
Nicht-assoziative Array-Ausgabe als Objekt: {"0":{"0" :1, "1":2,"2":3}}

Assoziatives Array wird immer als Objekt ausgegeben: {"foo": "bar", "baz": "long"}
Assoziativ Array wird immer als Objekt ausgegeben: {"foo": "bar", "baz": "long"}



Beispiel Nr. 3 Beispiel für kontinuierliche und nicht kontinuierliche Arrays


Kopieren Sie den Code wie folgt:


echo "continuous array".PHP_EOL;

$sequential = array("foo", "bar" , "baz", " blong");

var_dump(

$sequential,

json_encode($sequential)
);

echo PHP_EOL. PHP_EOL;
$nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong"); >$nonsequential,
json_encode($nonsequential)
);

echo PHP_EOL. „Ein nicht kontinuierliches Array, das durch Löschen eines kontinuierlichen Array-Werts generiert wird“. [1]);
var_dump(
$sequential,
json_encode($sequential)
);



Die obige Routine wird ausgeben:


Kopieren Sie den Code wie folgt:


Kontinuierliches Array
array(4) {
[0]=> ) "bar"
[2]=>
string(3) "baz"
[3]=>
string(5) "blong"
}
string (27) „[„foo“, „bar“, „baz“, „blong“]“

Nicht kontinuierliches Array
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“}“

Ein nicht kontinuierliches Array, das durch Löschen eines kontinuierlichen Array-Werts generiert wird
array(3) {
[0]=> string (3) "foo"
[2]=>
string(3) "baz"
[3]=>
string(5) "blong"
}
string(33) „{“0“: „foo“, „2“: „baz“, „3“: „blong“}“





Kopieren Sie den Code wie folgt:

$obj->Name= 'a1';$obj->Number ='123'; ';

echo json_encode($obj);

Das Ergebnis ist:



Kopieren Sie den Code wie folgt:

{" Name": "a1",

"Nummer": "123",
"Contno": "000"
}

Das können Sie Siehe json_encode() und json_decode() sind der Kompilierungs- und Dekompilierungsprozess. Beachten Sie, dass JSON nur utf-8-codierte Zeichen akzeptiert, daher müssen die Parameter von json_encode() utf-8-codiert sein, sonst erhalten Sie leere Zeichen oder Null.


json
Eine Zeichenfolge im JSON-Zeichenfolgenformat, die dekodiert werden soll.

assoc

Wenn dieser Parameter TRUE ist, wird ein Array anstelle eines Objekts zurückgegeben.

Gibt ein Objekt zurück, oder wenn der optionale assoc-Parameter TRUE ist, wird stattdessen ein assoziatives Array zurückgegeben

Beispiel

Beispiel Nr. 1 json_decode Beispiel für ()


Kopieren Sie den Code wie folgt:


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

Das obige Beispiel gibt Folgendes aus:

Kopieren Sie den Code wie folgt:



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)
}



Kopieren Sie den Code wie folgt:


$data='[{"Name ":"a1 ","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno" :"000" ,"QQNo":"},{"Name":a1",Nummer:"123",Contno::000",QQNo::"}]'
echo json_decode( $data);


Das Ergebnis ist:

Kopieren Sie den Code wie folgt:

Array ( [0] => stdClass Object ( [ Name] => a1 [Nummer] => 000 [QQNo] => ) [1] => a1 [Nummer] => [Contno] => 000 [QQNo] => ) [2] => stdClass Object ( [Name] => a1 [Number] => 000 [QQNo] = > ) )



Es ist ersichtlich, dass das von json_decode() kompilierte Objekt ein Objekt ist. Versuchen Sie nun, json_decode($data,true) auszugeben

Kopieren Sie den Code wie folgt:

echo json_decode($data,true);


Ergebnis:

Kopieren Sie den Code wie folgt:

Array ( [ 0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Array ( [Name] = > a1 [Nummer] => 000 [QQNo] => ) [2] => a1 [Nummer] => 000 [QQNo] => > 000 [QQNo] => ) )


Sie können sehen, dass json_decode($data,true) ein assoziatives Array ausgibt. Daraus können wir sehen, dass json_decode($data) ein Objekt ausgibt und json_decode("$arr",true) es zwingt, ein zu generieren PHP-Assoziatives Array. >json_encode – Ja Variablen sind JSON-codiert

Fehler melden Beschreibung
string json_encode ( Mixed $value [, int $options = 0 ] )
Gibt die JSON-Form des Werts zurück

Fehler melden Parameter

Wert
Der zu kodierende Wert kann mit Ausnahme des Ressourcentyps ein beliebiger Datentyp sein

Diese Funktion kann nur UTF-8-kodierte Daten akzeptieren

Optionen
Binärmaske bestehend aus den folgenden Konstanten: 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 🎜 >Einen Fehler melden Rückgabewert
Einen zurückgeben, wenn Die Codierung ist erfolgreich. Eine Zeichenfolge, die bei einem Fehler als JSON oder FALSE dargestellt wird.

Fehler melden Aktualisierungsprotokoll
Versionsbeschreibung
5.4.0 Optionsparameterkonstanten hinzugefügt: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES und JSON_UNESCAPED_UNICODE.
5.3.3 Der Optionsparameter fügt eine Konstante hinzu: JSON_NUMERIC_CHECK.
5.3.0 Optionsparameter hinzufügen


Einen Fehler melden Beispiel

Beispiel #1 Ein json_encode()-Beispiel

Kopieren Sie den Code wie folgt:


$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=> 4,'e'=>5);

echo json_encode($arr>?>

Die obige Routine gibt aus:

Kopieren Sie den Code wie folgt:


{"a":1,"b":2,"c":3,"d":4,"e":5}


Beispiel #2 Verwendung des Optionsparameters in der Funktion json_encode()


Kopieren Sie den Code wie folgt:

$a = Array (' ',"'bar'",'"baz"','&blong&', "xc3xa9"); ;
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 „All:“, json_encode($a, JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), „nn“; >

echo „Leeres Array, Ausgabe als Array:“, json_encode($b), „n“;

echo „Leeres Array, Ausgabe als Objekt:“, json_encode($b, JSON_FORCE_OBJECT), „nn“; 🎜>

$c = array(array(1,2,3));

echo „Nicht-assoziative Array-Ausgabe als Array:“, json_encode($c), „n“; >echo „Nicht-assoziative Array-Ausgabe als Objekt:“, json_encode($c, JSON_FORCE_OBJECT), „nn“;

$d = array('foo' => 'bar', 'baz' = > 'long');

echo „Assoziatives Array wird immer als Objekt ausgegeben:“, json_encode($d), „n“; $d) , JSON_FORCE_OBJECT), "nn";


Die obige Routine gibt Folgendes aus:

Kopieren Sie den Code wie folgt:


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&","é"]
Alle: [ „u003Cfoou003E“, „u0027baru0027“, „u0022bazu0022“, „u0026blongu0026“, „é“]

Leere Array-Ausgabe als Array: []
Leere Array-Ausgabe als Objekt: {}

Nicht-assoziative Array-Ausgabe als Array: [[1,2,3]]
Nicht-assoziative Array-Ausgabe als Objekt: {"0":{"0":1,"1":2,"2" :3}}

Assoziatives Array wird immer als Objekt ausgegeben: {"foo": "bar", "baz": "long"}
Assoziatives Array wird immer als Objekt ausgegeben: {"foo": bar","baz":"long"}


Beispiel Nr. 3 Beispiel für kontinuierliche und nicht kontinuierliche Arrays

Kopieren Sie den Code wie folgt:


< ;?php
echo "continuous array".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong"); $sequential,
json_encode($sequential)
);

echo PHP_EOL."non-continuous array".PHP_EOL; 2=> "bar", 3=>"blong");
var_dump(
$nonsequential,
json_encode($nonsequential)
); 🎜>
echo PHP_EOL. „Ein nicht kontinuierliches Array, das durch Löschen eines kontinuierlichen Array-Werts generiert wird“. PHP_EOL;
unset($sequential[1]);
$sequential,
json_encode($ sequence)
);
?> Die obige Routine gibt Folgendes aus:

Kopieren Sie den Code wie folgt:


Kontinuierliches Array
array(4) {

[0]=>
string(3) "foo"
[1]=> "

[ 2]=>

string(3) "baz"

[3]=>
string(5) "blong"
}
string(27) „[„foo“, „bar“, „baz“, „blong“]“

Nicht kontinuierliches Array
array(4) {
[1]=> (3) „foo“
[2]=>
string(3) „bar“
[3]=> =>
string(5) „blong“
}
string(43) „{“1“: „foo“, „2“: „bar“, „3“: „baz“, „4“: „blong „}“

Ein nicht kontinuierliches Array, das durch Löschen eines kontinuierlichen Array-Werts generiert wird
array(3) {
[0]=>
string(3 ) „foo“
[2]=>
string(3) „baz“
[3]=> (33) „{“ 0“foo“, „2“ „baz“, „3“ „blong“}“



Kopieren Sie den Codecode wie folgt:


$obj->Name= 'a1';$obj->Number ='123';
$obj->Contno= '000'; $obj);


Das Ergebnis ist:

Kopieren Sie den Code wie folgt:


{"Name":"a1",

„Number“: „123“,
„Contno“: „000“

}


Es ist ersichtlich, dass json_encode() und json_decode() Kompilierungs- und Dekompilierungsprozesse sind dass JSON nur UTF-8-codierte Zeichen akzeptiert, daher müssen die Parameter von json_encode() UTF-8-codiert sein, sonst erhalten Sie Nullzeichen oder Null.

Das obige ist der detaillierte Inhalt vonVergleichen Sie die Unterschiede zwischen json_encode und json_decode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage