Как игнорировать определенные значения при применении json_encode к классу

Есть ли способ игнорировать определенные атрибуты класса для класса в php при кодировании json.

Например, в java с библиотекой jackson я могу аннотировать глобальные переменные с помощью @JsonIgnore, чтобы добиться этого. Есть ли что-то сопоставимое (желательно родное) в php ??

Related of "Как игнорировать определенные значения при применении json_encode к классу"

Один из способов – использовать интерфейс JsonSerializable . Это позволяет создать функцию, вызываемую при вызове json_encode() в вашем классе.

Например:

 class MyClass implements JsonSerializable{ public $var1, $var2; function __construct($a1, $a2){ $this->var1 = $a1; $this->var2 = $a2; } // From JsonSerializable public function jsonSerialize(){ return ['var1' => $this->var1]; } } 

Таким образом, когда вызывается json_encode() , кодируется только var1 .

 $myObj = new MyClass(10, 20); echo json_encode($myObj); // {"var1":10} 

ДЕМО: https://eval.in/103959

Примечание. Это работает только на PHP 5.4+