¿Hay alguna manera de verificar que una variable sea una cadena JSON válida en PHP sin usar json_last_error()
? No tengo PHP 5.3.3.Validar json en php
Respuesta
$ob = json_decode($json);
if($ob === null) {
// $ob is null because the json cannot be decoded
}
Falla si la cadena json es un valor 'falso' simple (válido). –
Gracias chicos, esto ayuda mucho :) –
estoy usando la función json_decode y su comportamiento muy extraño. si envío una solicitud como esta: http://api.nblackburn.me/jobtrackr?task=account&action=modify&session=206a2911127c224a5893b8d78a4bf0fc¶ms= {}, funciona, pero si agrego algún JSON válido, ¿no es así, alguna idea? –
Puede verificar si el valor de json_decode
es null
. Si es así, no es válido.
estoy usando la función json_decode y su comportamiento es muy extraño. si envío una solicitud como esta: http://api.nblackburn.me/jobtrackr?task=account&action=modify&session=206a2911127c224a5893b8d78a4bf0fc¶ms= {}, funciona, pero si agrego algún JSON válido, ¿no es así, alguna idea? –
Muéstranos el JSOn que estás tratando de analizar. –
$data = json_decode($json_string);
if (is_null($data)) {
die("Something dun gone blowed up!");
}
Además se puede echar un vistazo a http://php.net/manual/en/function.json-last-error-msg.php que contiene las implementaciones de la función que falta.
Uno de ellos es:
if (!function_exists('json_last_error_msg')) {
function json_last_error_msg() {
static $ERRORS = array(
JSON_ERROR_NONE => 'No error',
JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
JSON_ERROR_STATE_MISMATCH => 'State mismatch (invalid or malformed JSON)',
JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',
JSON_ERROR_SYNTAX => 'Syntax error',
JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded'
);
$error = json_last_error();
return isset($ERRORS[$error]) ? $ERRORS[$error] : 'Unknown error';
}
}
(copiada de pegar desde el sitio)
Si desea verificar si su entrada es JSON válida, que también podría estar interesado en la validación o no sigue un formato específico, es decir, un esquema. En este caso, puede definir su esquema usando JSON Schema y validarlo usando library.
Ejemplo:
person.json
{
"title": "Person",
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
}
},
"required": ["firstName", "lastName"]
}
Validación
<?php
$data = '{"firstName":"Hermeto","lastName":"Pascoal"}';
$validator = new JsonSchema\Validator;
$validator->validate($data, (object)['$ref' => 'file://' . realpath('person.json')]);
$validator->isValid()
- 1. Cómo validar JSON con Jackson JSON
- 2. parámetros Validar URL en php
- 3. php validar número entero
- 4. json decode en php
- 5. sangría JSON en PHP
- 6. cómo validar números decimales en PHP
- 7. Validar formato de fecha en php
- 8. Cómo validar una fecha MYSQL en PHP?
- 9. Validar la sintaxis de PHP en VIM
- 10. ¿Cómo validar un correo electrónico en PHP?
- 11. Validar una cadena para ser json o no en asp.net
- 12. Serializar o json en PHP?
- 13. PHP/JSON - stdClass Objeto
- 14. Cargando JSON con PHP
- 15. PHP: JSON límites decodificar
- 16. json stringify a php
- 17. PHP anidado JSON
- 18. get json usando php
- 19. cómo validar la fecha con PHP
- 20. PHP Regex validar letras y acento español
- 21. Validar las entradas de Crontab con PHP
- 22. PHP JSON decodificar - stdClass
- 23. Cómo validar una expresión regular con PHP
- 24. Almacenamiento en caché Salida JSON en PHP
- 25. php Validar cadenas de latitud/longitud en formato decimal
- 26. php - cómo validar una expresión regular en sí?
- 27. Validar que un archivo es una imagen en PHP
- 28. validar una solicitud SOAP entrante para el WSDL en PHP
- 29. Inserte JSON en MongoDb directamente desde PHP
- 30. Cómo hacer eco de JSON en PHP
¿Qué versión de PHP tiene usted? – Whetstone
Todavía podría probar si sale un valor válido de solo decodificarlo, incluso si no conoce el error de sintaxis exacto. (O use una expresión regular para validarlo. Ha) – mario
'json_decode' devolverá' null' en caso de error, y está disponible en PHP> = 5.2. – Jon