Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie ein leeres Array in ein JSON-Objekt in PHP

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

藏色散人
藏色散人Original
2021-04-02 09:45:222917Durchsuche

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

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!

Stellungnahme:
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