Rogério Lino

Web development and tips

PHP: JsonSerializable

Desde a versão 5.4 do PHP ficou mais fácil transformar entidades em JSON através da função json_encode(). Basta implementar a interface JsonSerializable, no qual o único método que precisa ser implementado pela subclasse é o jsonSerialize.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class User implements \JsonSerializable {

    private $username;
    private $firstName;
    private $lastName;

    ...

    public function jsonSerialize() {
        return array(
            'username' => $this->username,
            'firstName' => $this->firstName,
            'lastName' => $this->lastName,
            'fullName' => "{$this->firstName} {$this->lastName}"
        );
    }

}

Serializando:

1
2
3
4
5
$user = new User();
$user->setUsername("rogeriolino");
$user->setFirstName("Rogério");
$user->setLastName("Lino");
echo json_encode($user);

Resultado:

1
2
3
4
5
6
{
    "username": "rogeriolino",
    "firstName": "Rogério",
    "lastName": "Lino",
    "fullName": "Rogério Lino",
}

Essa implementação se torna muito útil para desenvolvimento de APIs RESTful e ajax responses (json response).

Comments