Heim >Backend-Entwicklung >PHP-Problem >So konvertieren Sie ein leeres Array in ein JSON-Objekt in PHP
So konvertieren Sie ein leeres Array in ein JSON-Objekt: 1. Verwenden Sie „JSON_FORCE_OBJECT“, um ein JSON-Objekt zu konvertieren. 2. Verwenden Sie die Datentypkonvertierung, um ein leeres Array in ein JSON-Objekt zu konvertieren. 3. Verwenden Sie ArrayObject, um ein leeres Array in ein JSON-Objekt zu konvertieren .
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
PHP json_encode konvertiert leere Arrays in Objekte
Problembeschreibung:
php stellt Schnittstellen auf dem Client bereit B. PC Mit Android, iOS usw. Wenn Daten im JSON-Format zurückgegeben werden, die zurückgegebenen Daten ein Array und der Schlüssel eine Zeichenfolge sind, wird jsonObject nach der Jsonisierung zurückgegeben. Wenn es sich jedoch um ein leeres Array handelt, wird jsonArray zurückgegeben kann zurückgegeben werden und die Datenstruktur ist inkonsistent. Dies führt dazu, dass das Ende der JSON-Analyse fehlschlägt.
Zum Beispiel:
$arr = [ 'id' => 123., 'name' => 'andrew' , ]; $jsonRet = json_encode( $arr ); print_r( $jsonRet );
Ausgabe:
{ "id": 123, "name": "andrew" }
Aber wenn es ist:
$arr = []; $jsonRet = json_encode($arr); print_r($jsonRet);
Ausgabe:
[ ]
Wie kann es auch ein JsonObject sein, wenn das Array leer ist?
Methode 1:
JSON_FORCE_OBJECT verwenden
$arr = []; $jsonRet = json_encode($arr, JSON_FORCE_OBJECT); print_r($jsonRet);
Diese Methode hat einen Nachteil, z. B.:
$arr = [ 'jsonArray' => [ '21', '12', '13' ], 'jsonObject' => [] ]; $jsonRet = json_encode($arr,JSON_FORCE_OBJECT); print_r($jsonRet);
Ausgabe:
{ "jsonArray": { "0": "21", "1": "12", "2": "13" }, "jsonObject": { } }
Das ursprüngliche jsonArray wurde ebenfalls jsonObjectified, und lokale Änderungen können sich nicht auf das globale auswirken
Methode 2
Verwenden Sie die Datentypkonvertierung
$bar = array(); $foo = (object)$bar; echo json_encode($foo);
Methode drei (empfohlen)
Verwenden Sie ArrayObject
$arr = [ 'jsonArray' => [ '21', '12', '13' ], 'jsonObject' => new \ArrayObject() ]; $jsonRet = json_encode($arr); print_r($jsonRet);
Ausgabe:
{ "jsonArray": [ "21", "12", "13" ], "jsonObject": { } }
【Empfohlenes Lernen: PHP-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie ein leeres Array in ein JSON-Objekt in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!