Есть ли способ игнорировать определенные атрибуты класса для класса в php при кодировании json.
Например, в java с библиотекой jackson я могу аннотировать глобальные переменные с помощью @JsonIgnore, чтобы добиться этого. Есть ли что-то сопоставимое (желательно родное) в php ??
Один из способов – использовать интерфейс 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+