print json_encode example ejemplo array php json object encode

json_encode - php object to json



Instancia de clase PHP a JSON (4)

Estoy intentando repetir el contenido de un objeto en formato JSON. Estoy bastante inexperto con PHP y me preguntaba si hay una función predefinida para hacer esto (como json_encode ()) o ¿tiene que construir la cadena usted mismo? Cuando busca en Google "objeto PHP a JSON", solo encuentro basura.

class Error { private $name; private $code; private $msg; public function __construct($ErrorName, $ErrorCode, $ErrorMSG){ $this->name = $ErrorName; $this->code = $ErrorCode; $this->msg = $ErrorMSG; } public function getCode(){ return $this->code; } public function getName(){ return $this->name; } public function getMsg(){ return $this->msg; } public function toJSON(){ $json = ""; return json_encode($json); } }

Lo que quiero que JSON devuelva:

{name: "el contenido de $ name var", código: 1001, msg: error al hacer la solicitud}


Deberá hacer pública su variable para que aparezca en json_encode() .

Además, el código que estás buscando es

public function toJSON(){ return json_encode($this); }


Estás por allí. Eche un vistazo a get_object_vars en combinación con json_encode y tendrá todo lo que necesita. Obra:

json_encode(get_object_vars($error));

debe devolver exactamente lo que estás buscando.

Los comentarios que aparecen en get_object_vars respetan la visibilidad, así que considere hacer algo como lo siguiente en su clase:

public function expose() { return get_object_vars($this); }

Y luego cambiando la sugerencia anterior a:

json_encode($error->expose());

Eso debería ocuparse de los problemas de visibilidad.


Una solución alternativa en PHP 5.4+ es el uso de la interfaz JsonSerializable .

class Error implements /JsonSerializable { private $name; private $code; private $msg; public function __construct($errorName, $errorCode, $errorMSG) { $this->name = $ErrorName; $this->code = $ErrorCode; $this->msg = $ErrorMSG; } public function jsonSerialize() { return get_object_vars($this); } }

Luego, puede convertir su objeto de error en JSON con json_encode

$error = new MyError("Page not found", 404, "Unfortunately, the page does not exist"); echo json_encode($error);

Mira el ejemplo here

Más información sobre / JsonSerializable


public function toJSON(){ $json = array( ''name'' => $this->getName(), ''code'' => $this->getCode(), ''msg'' => $this->getMsg(), ); return json_encode($json); }

Demostración: http://codepad.org/mPNGD6Gv