PHP 5.4 introduz algumas grandes melhorias em sua extensão JSON. Um deles é a interface JsonSerializable
.
JsonSerializable
Os objetos que implementam essa interface devem fornecer um método chamado jsonSerialize
. Este método deve retornar quaisquer dados do objeto que devem ser transformados em JSON quando json_encode
é chamado com este objeto como parâmetro.
<?php
class TreeNode implements JsonSerializable
{
private $value;
private $children = array();
public function __construct($value)
{
$this->value = $value;
}
// accessor methods for $this->children omitted
public function jsonSerialize()
{
return ['value' => $this->value,
'children' => $this->children];
}
}
$t = new TreeNode(1);
$t->addChild(new TreeNode(2));
echo json_encode($t);
// output:
// {"value":1,"children":[{"value":2,"children":[]}]}
JSON_PRETTY_PRINT
Ler JSON (ou melhor: analisar JSON em sua cabeça) é muito doloroso se não estiver formatado corretamente. Com a nova opção JSON_PRETTY_PRINT
, o PHP é capaz de produzir JSON (quase) legível por humanos:
echo json_encode($t, JSON_PRETTY_PRINT);
// output:
// {
// "value": 1,
// "children": [
// {
// "value": 2,
// "children": [
//
// ]
// }
// ]
// }