Wie steuere ich das Verhalten von json_encode?

8

Gibt es eine Möglichkeit, json_encode Verhalten auf Objekten zu steuern? Wie zum Beispiel leere Arrays, Nullfelder und so weiter?

Ich meine etwas wie bei der Verwendung von serialize() , wo Sie die Methode magic __sleep() implementieren und angeben können, welche Eigenschaften serialisiert werden sollen:

%Vor%     
gremo 08.01.2012, 13:41
quelle

2 Antworten

6

Die korrekteste Lösung ist die Erweiterung der Schnittstelle JsonSerializable;

Wenn Sie diese Schnittstelle verwenden, müssen Sie nur mit der Funktion jsonSerialize () zurückkehren, die Sie anstelle Ihrer Klasse mit json_encode codieren möchten.

Verwenden Sie Ihr Beispiel:

%Vor%

Hinweis: funktioniert in php & gt; = 5.4 Ссылка

    
user1883650 03.01.2014 20:02
quelle
0

Sie könnten die Variablen privat machen. Dann werden sie nicht in der JSON-Codierung angezeigt.

Wenn das keine Option ist, könnten Sie ein privates Array erstellen und die magischen Methoden __get ($ key) und __set ($ key, $ value) verwenden, um Werte in / aus diesem Array zu setzen und abzurufen. In Ihrem Fall wären die Schlüssel "leer" und "null". Sie können dann weiterhin auf sie zugreifen, aber der JSON-Encoder findet sie nicht.

%Vor%

Ссылка

    
Jarvix 13.01.2012 16:09
quelle

Tags und Links