note 125351 added to function.json-last-error
| From: | jairospino at ingenieros dot com | Date: | Fri, 11 Sep 2020 13:47:27 +0000 |
| Subject: | note 125351 added to function.json-last-error | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-215097@lists.php.net to get a copy of this message | ||
Esta clase de ejemplo muestra como podrÃamos validar si un Json tiene el formato correctamente.
<?php
class Biblioteca
{
// Se valida que el formato Json este correctamente
public function validarJson($json = 'error')
{
$retornaJson = json_decode($json);
switch (json_last_error()) {
case JSON_ERROR_NONE:
$error = '';
break;
case JSON_ERROR_DEPTH:
$error = 'Se superó la profundidad máxima de la pila.';
break;
case JSON_ERROR_STATE_MISMATCH:
$error = 'JSON inválido o mal formado.';
break;
case JSON_ERROR_CTRL_CHAR:
$error = 'Error de carácter de control, posiblemente codificado
incorrectamente.';
break;
case JSON_ERROR_SYNTAX:
$error = 'Error de sintaxis, JSON con formato incorrecto.';
break;
case JSON_ERROR_UTF8:
$error = 'Caracteres UTF-8 con formato incorrecto, posiblemente codificados
incorrectamente.';
break;
case JSON_ERROR_RECURSION:
$error = 'Una o más referencias recursivas en el valor a codificar.';
break;
case JSON_ERROR_INF_OR_NAN:
$error = 'Uno o más valores NaN o InF en el valor que se va a
codificar.';
break;
case JSON_ERROR_UNSUPPORTED_TYPE:
$error = 'Se proporcionó un valor de un tipo que no se puede
codificar.';
break;
default:
$error = 'Ocurrió un error JSON desconocido.';
break;
}
if ($error !== '') {
return $error;
}
return $retornaJson;
}
/** respuestaJson($msn, $estado, $data)
* - EnvÃa una respuesta a la solicitud realizada por el usuario
*
* # Parámetros que recibe
*
* @msn : indica el mensaje que el usuario tendrá como respuesta a su solicitud
*
* @data : contiene los datos de la respuesta en formato Json
*
* @estado: muestra el estado de la respuesta a la solicitud realizada por el usuario o
sistema
* Este estado es especificado por el <<desarrollador>>
*
* Nota: se puede reemplazar "JSON_ERROR_NONE" por "0" y funciona
igual
*/
public function respuestaJson(string $msn = 'Sin mensaje', string $estado =
'ok', string $data = null): string
{
// en caso que se reciban datos
// se verifica que tengan el formato Json correcto
if ($data) {
$testJson = $this->validarJson($data);
if (json_last_error() !== JSON_ERROR_NONE) {
$estado = 'error';
$msn = $testJson;
$data = null;
}
}
$jsonRespuesta = array(
"estado" => $estado,
"mensaje" => $msn,
"data" => $data
);
return json_encode($jsonRespuesta, JSON_UNESCAPED_UNICODE);
}
}
$verMns = new Biblioteca();
echo $verMns->respuestaJson('Petición exitosa',
'ok','{"id":1122,"nombre":"Jair Ospino Ardila"}');
//TendrÃamos como respuesta
{
estado: "ok",
mensaje: "Petición exitosa",
data: "{"id":1122,"nombre":"Jair Ospino Ardila"}"
}
----
Server IP: 45.112.84.4
Probable Submitter: 177.234.144.170 (proxied: 181.55.20.212)
----
Manual Page -- http://php.net/manual/en/function.json-last-error.php
Edit -- https://master.php.net/note/edit/125351
Del: integrated -- https://master.php.net/note/delete/125351/integrated
Del: useless -- https://master.php.net/note/delete/125351/useless
Del: bad code -- https://master.php.net/note/delete/125351/bad+code
Del: spam -- https://master.php.net/note/delete/125351/spam
Del: non-english -- https://master.php.net/note/delete/125351/non-english
Del: in docs -- https://master.php.net/note/delete/125351/in+docs
Del: other reasons-- https://master.php.net/note/delete/125351
Reject -- https://master.php.net/note/reject/125351
Search -- https://master.php.net/manage/user-notes.php