Diferencia entre revisiones de «Función json validate»

De Wiki Proyectos Beta
Ir a la navegación Ir a la búsqueda
([feat] Add information Función json validate)
 
(No se muestran 3 ediciones intermedias del mismo usuario)
Línea 20: Línea 20:
  $json = '{"name": "Luis Montiel"}';
  $json = '{"name": "Luis Montiel"}';
  $data = json_decode($json);
  $data = json_decode($json);
 
  if (json_last_error() === JSON_ERROR_NONE) {
  if (json_last_error() === JSON_ERROR_NONE) {
    // JSON valido
    echo "JSON valido";
  } else {
  } else {
    // JSON invalido
    echo "JSON invalido";
  }
  }


Línea 31: Línea 31:
  $json = '{"name": "Luis Montiel"}';
  $json = '{"name": "Luis Montiel"}';
  $valid = json_validate($json);
  $valid = json_validate($json);
 
  if ($valid) {
  if ($valid) {
     // JSON valido
     echo "JSON valido";
  } else {
  } else {
     // JSON invalido
     echo "JSON invalido";
  }
  }

Revisión actual - 08:54 22 oct 2023

Descripción

Para validar una cadena JSON anterior a PHP 8.3, se necesitaba pasarla a json_decode() y luego ver si se emitían errores y/o excepciones.

Al utilizar este enfoque para validar estructuras JSON grandes, corría el riesgo de quedarse sin memoria antes de determinar si era válida. Además, esto podría hacer que alcance el límite de memoria de PHP antes de procesar la estructura.

La nueva función tiene más rendimiento y menos susceptible a errores. La función es:

función json_validate(cadena $json, int $profundidad = 512, int $flags = 0): bool 

Recursos

Ejemplo

Antes de PHP 8.3

$json = '{"name": "Luis Montiel"}';
$data = json_decode($json);

if (json_last_error() === JSON_ERROR_NONE) {
   echo "JSON valido";
} else {
   echo "JSON invalido";
}

Después de PHP 8.3

$json = '{"name": "Luis Montiel"}';
$valid = json_validate($json);

if ($valid) {
    echo "JSON valido";
} else {
   echo "JSON invalido";
}