Heim >Backend-Entwicklung >PHP-Tutorial >Vergleichen Sie die Unterschiede zwischen json_encode und json_decode
Vier Grundprinzipien von JSON
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 ()
$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)
}
echo json_decode($data);
Das Ergebnis ist:
Kopieren Sie den Code wie folgt:
Es ist ersichtlich, dass die von json_decode() kompilierten Objekte jetzt als json_decode ($ data,true) Versuchen Sie
Kopieren Sie den Code wie folgt:
Ergebnis:
Kopieren Sie den Code wie folgt:
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:
{"a":1,"b":2,"c":3,"d":4,"e":5 }
Beispiel #2 Verwendung des Optionsparameters in der Funktion json_encode()
< ;? php
$a = array('
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: ["
Tags: ["u003Cfoou003E","'bar'",""baz"","&blong&","u00e9"]
Quot: ["
echo "continuous array".PHP_EOL;
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:
echo json_encode($obj);
Kopieren Sie den Code wie folgt:
"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.
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));
?> 🎜>
object(stdClass)#1 (5) {
[" a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => ; int(4)
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:
Es ist ersichtlich, dass das von json_decode() kompilierte Objekt ein Objekt ist. Versuchen Sie nun, json_decode($data,true) auszugeben
echo json_decode($data,true);
Ergebnis:
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()
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: ["
Tags: ["u003Cfoou003E","'bar' ",""baz"","&blong&","u00e9"]
Apos: ["
Quot: ["
Amp: ["
Unicode: ["
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"}
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) {
[ 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",
}
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!