json encode solo funciona con tipos primitivos. Si tienes clases, hazles un método que las convierta a una cadena JSON.
Código PHP:
Ver originalclass Cosa{
...
public function toJSON() {
'algo' => $this->algo,
'protected_algo' => $this->get_protected_algo(),
'private_algo' => $this->get_private_algo()
));
}
...
}
...
echo $cosa->toJSON();