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:
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 Ссылка
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%Tags und Links php json serialization object