JSON, пожалуй, наиболее часто используемый формат в приложениях, разработанных с помощью Symfony. Вы, вероятно, делаете запросы к API JSON и отправляете/получаете полезные данные JSON в своих проектах. Вот почему Symfony предоставляет класс JsonResponse
, способ построения аутентификации JSON, полную поддержку JSON в компоненте Serializer, помощник json() для контроллеров и т. д.
В Symfony 4.3 улучшили компонент Validator, добавив новое ограничение Json, которое можно применять к свойствам и получателям, и обеспечили, чтобы данное содержимое было допустимым содержимым JSON:
Annotation
// src/Entity/Book.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Book
{
/**
* @Assert\Json(message = "This is not valid JSON")
*/
protected $chapters;
}
YAML
# config/validator/validation.yaml
App\Entity\Book:
properties:
chapters:
- Json:
message: 'This is not valid JSON'
XML
<!-- config/validator/validation.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
<class name="App\Entity\Book">
<property name="chapters">
<constraint name="Json">
<option name="message">This is not valid JSON</option>
</constraint>
</property>
</class>
</constraint-mapping>
PHP
// src/Entity/Book.php
namespace App\Entity;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints as Assert;
class Book
{
protected $chapters;
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('chapters', new Assert\Json(array(
'message' => 'This is not valid JSON',
)));
}
}