json_validate în PHP

JSON PHP 8.3+

Verifică dacă un text este JSON valid, fără să îl decodeze. Mai rapidă și cu memorie mai puțină decât json_decode.

Sintaxă
json_validate(string $json, int $depth = 512, int $flags = 0): bool

Ce face json_validate

json_validate a apărut în PHP 8.3. Spune doar dacă textul este JSON corect, fără să construiască tablouri sau obiecte. Pentru texte mari consumă mult mai puțină memorie decât json_decode.

Folosește-o când vrei doar să verifici datele (de exemplu înainte să le salvezi ca atare în baza de date). Dacă oricum ai nevoie de date, apelează direct json_decode. Motivul erorii îl afli cu json_last_error_msg().

Parametri

Parametru Descriere
$json Textul verificat.
$depth Opțional. Adâncimea maximă permisă a structurii.
$flags Opțional. Singura opțiune acceptată este JSON_INVALID_UTF8_IGNORE.

Ce returnează

true dacă textul este JSON valid, altfel false.

Exemple

Exemplul 1: JSON valid și invalid

<?php
var_dump(json_validate('{"nume": "Ana", "varsta": 25}'));
var_dump(json_validate("{nume: 'Ana'}"));
var_dump(json_validate("[1, 2, 3,]"));
var_dump(json_validate('"doar un text"'));

Rezultat

bool(true)
bool(false)
bool(false)
bool(true)

Exemplul 2: Mesajul erorii

<?php
$primit = '{"comanda": 1024, "produse": [';

if (!json_validate($primit)) {
    echo "JSON invalid: " . json_last_error_msg();
}

Rezultat

JSON invalid: Syntax error

Greșeli frecvente

  • Apelezi json_validate și imediat după json_decode pe același text. Textul este analizat de două ori. Dacă ai nevoie de date, folosește doar json_decode cu JSON_THROW_ON_ERROR.
  • Rulezi codul pe un server cu PHP mai vechi de 8.3 și primești Call to undefined function json_validate().

Comenzi înrudite