Правило json
Правило json применяется в валидации запросов Laravel
и проверяет, что значение поля представляет собой строку,
содержащую валидный JSON. При этом проверяется только
синтаксическая корректность JSON, тип данных значения
не ограничивается - это может быть объект, массив,
число, строка или булево значение.
Синтаксис
Правило указывается в массиве правил валидации
в виде строки или с использованием класса Rule:
<?php
'field' => 'json'
?>
Либо через фасад Validator:
<?php
use Illuminate\Validation\Rule;
'field' => Rule::json()
?>
Пример
Давайте проверим, что поле 'options' содержит
валидную JSON-строку:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$data = [
'options' => '{"theme": "dark", "notifications": true}'
];
$rules = [
'options' => 'json'
];
$validator = Validator::make($data, $rules);
if ($validator->passes()) {
echo "Validation passed";
} else {
echo "Validation failed";
}
?>
Результат выполнения кода:
"Validation passed"
Пример
Поле 'settings' содержит массив в формате JSON:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
$data = [
'settings' => '["user", "admin", "guest"]'
];
$rules = [
'settings' => Rule::json()
];
$validator = Validator::make($data, $rules);
if ($validator->fails()) {
echo "Validation failed: " . $validator->errors()->first('settings');
} else {
echo "JSON is valid";
}
?>
Результат выполнения кода:
"JSON is valid"
Пример
Проверка невалидного JSON с синтаксической ошибкой:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$data = [
'config' => '{"key": "value",}'
];
$rules = [
'config' => 'json'
];
$validator = Validator::make($data, $rules);
if ($validator->fails()) {
echo $validator->errors()->first('config');
} else {
echo "JSON is valid";
}
?>
Результат выполнения кода:
"The config must be a valid JSON string"