2017-11-22 1 views
1

Ich versuche, ein PHP-Array-Objekt in ein JSON zu konvertieren. Folgen ist das PHP-Array-Objekt;PHP-Array-Objekt zum Serialisieren

Array 
(
    [0] => Project\Man\Model\Branch Object 
     (
      [id:protected] => 123456 
      [name:protected] => Parent Branch 
      [type:protected] => services 
     ) 

) 

Ich versuchte Serialisierung, aber es ist nicht in einem freundlich lesbaren Objekt.

Ich habe versucht, die folgenden:

json_encode

serialize

a:1:{i:0;O:23:"Project\Man\Model\Branch ":3:{s:5:"*id";s:36:"123456";s:7:"*name";s:20:"Parent Branch";s:7:"*type";s:8:"services";}}[{}] 

ich für einige Lösung versuchen, wo ich JSON bekommen kann. irgendeine Hilfe.

+0

Wenn Sie nur json wollen, sollten Sie nur 'json_encode()', nicht 'serialize()' verwenden. –

+0

, aber es gibt mir ein leeres Ergebnis. [{}} @MagnusEriksson – TomPHP

Antwort

2

Wenn Sie nur json wollen, sollten Sie nur json_encode(), nicht serialize() verwenden.

Da Ihre Objekteigenschaften auf protected eingestellt sind, sind sie jedoch nicht verfügbar, wenn Sie das Objekt ohne zusätzliche Hilfe codieren.

Hier kommt die Schnittstelle JsonSerializable ins Spiel.

Sie müssen sicherstellen, dass das Objekt, das Sie codieren möchten, die Schnittstelle implementiert. Dann müssen Sie der Klasse eine jsonSerialize() Methode hinzufügen.

class Branch implements \JsonSerializable 
{ 
    protected $id; 
    protected $name; 
    protected $type; 

    // ... your class code 

    public function jsonSerialize() 
    { 
     // Return what you want to be encoded 
     return [ 
      'id' => $this->id, 
      'name' => $this->name, 
      'type' => $this->type, 
     ]; 
    } 
} 

Wenn Sie nun dieses Objekt durch json_encode() passieren und Sie werden einen JSON-String mit dem, was unserer neuen Methode gibt zu bekommen.

Verwandte Themen