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 in PHP

藏色散人
Freigeben: 2023-03-09 10:10:02
Original
3097 Leute haben es durchsucht

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 .

So konvertieren Sie ein leeres Array in ein JSON-Objekt in PHP

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 );
Nach dem Login kopieren

Ausgabe:

{
  "id": 123,
  "name": "andrew"
}
Nach dem Login kopieren

Aber wenn es ist:

$arr = [];
$jsonRet = json_encode($arr);
print_r($jsonRet);
Nach dem Login kopieren

Ausgabe:

[
  
]
Nach dem Login kopieren

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);
Nach dem Login kopieren

Diese Methode hat einen Nachteil, z. B.:

$arr = [
    'jsonArray' => [
        '21', '12', '13'
    ],
    'jsonObject' => []
];
$jsonRet = json_encode($arr,JSON_FORCE_OBJECT);
print_r($jsonRet);
Nach dem Login kopieren

Ausgabe:

{
  "jsonArray": {
    "0": "21",
    "1": "12",
    "2": "13"
  },
  "jsonObject": {
    
  }
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

Methode drei (empfohlen)

Verwenden Sie ArrayObject

$arr = [
    'jsonArray' => [
        '21', '12', '13'
    ],
    'jsonObject' => new \ArrayObject()
];
$jsonRet = json_encode($arr);
print_r($jsonRet);
Nach dem Login kopieren

Ausgabe:

{
  "jsonArray": [
    "21",
    "12",
    "13"
  ],
  "jsonObject": {
    
  }
}
Nach dem Login kopieren

【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!

Verwandte Etiketten:
php
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