7 способов проверить, действителен ли JSON в PHP

JSON (нотация объектов JavaScript) — это широко используемый формат обмена данными, который обычно используется в веб-разработке. При работе с данными JSON в PHP важно убедиться в их достоверности перед дальнейшей обработкой. В этой статье мы рассмотрим несколько методов проверки корректности JSON в PHP, а также приведем примеры кода.

Метод 1: использование json_decode()

$json = '{ "name": "John", "age": 30, "city": "New York" }';
$result = json_decode($json);
if ($result !== null && json_last_error() === JSON_ERROR_NONE) {
    echo "Valid JSON";
} else {
    echo "Invalid JSON";
}

Метод 2: использование json_last_error()

$json = '{ "name": "John", "age": 30, "city": "New York" }';
$result = json_decode($json);
if (json_last_error() === JSON_ERROR_NONE) {
    echo "Valid JSON";
} else {
    echo "Invalid JSON";
}

Метод 3: использование json_last_error_msg()

$json = '{ "name": "John", "age": 30, "city": "New York" }';
$result = json_decode($json);
if (json_last_error() === JSON_ERROR_NONE) {
    echo "Valid JSON";
} else {
    echo "Invalid JSON: " . json_last_error_msg();
}

Метод 4. Использование блока try-catch

$json = '{ "name": "John", "age": 30, "city": "New York" }';
try {
    $result = json_decode($json);
    if ($result !== null) {
        echo "Valid JSON";
    } else {
        throw new Exception("Invalid JSON");
    }
} catch (Exception $e) {
    echo $e->getMessage();
}

Метод 5. Использование библиотеки JSONLint

require_once 'JSONLint.php';
$json = '{ "name": "John", "age": 30, "city": "New York" }';
if (JSONLint::isValid($json)) {
    echo "Valid JSON";
} else {
    echo "Invalid JSON";
}

Метод 6. Использование регулярных выражений

$json = '{ "name": "John", "age": 30, "city": "New York" }';
if (preg_match('/^[\],:{}\s]*$/', $json)) {
    echo "Valid JSON";
} else {
    echo "Invalid JSON";
}

Метод 7. Использование компонента Symfony Validator

require_once 'vendor/autoload.php';
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints\Json;
$json = '{ "name": "John", "age": 30, "city": "New York" }';
$validator = Validation::createValidator();
$errors = $validator->validate($json, new Json());
if (count($errors) === 0) {
    echo "Valid JSON";
} else {
    echo "Invalid JSON";
}

В этой статье мы рассмотрели семь различных методов проверки корректности JSON в PHP. Эти методы включают использование встроенных функций PHP, таких как json_decode()и json_last_error(), а также внешних библиотек, таких как JSONLint и компонент Symfony Validator. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать метод, который лучше всего соответствует вашим потребностям.

Не забывайте всегда проверять данные JSON перед их обработкой, чтобы обеспечить целостность и согласованность вашего приложения.