如何在Symfony中创建JSON类型

mpgws1up  于 2023-10-23  发布在  其他
关注(0)|答案(2)|浏览(84)

实际上我正在寻找一种方法来验证json中的元素。我认为有一种方法可以列出它们来严格避免接受错误的元素。例如,代替下面所示的“gender”:“male”,有人可以发送“sex”:“male”,我试图避免它。
我有一个名为Profile的数据字段(列)
profile = {'name': 'Payne', 'gender': 'male', 'favourites': [{'drinks': 'soda'}, {'colour': 'blue'}, {'game': 'scrabble'}], 'dob': '1962'}
我正在使用第三方API来填充使用HttpClient的数据库。
我的响应返回JSON,我想用它做一些决定并将其存储在数据库中,但我需要严格验证它是否符合预期。

zlhcx6iw

zlhcx6iw1#

关于验证:

如果你知道如何使用数组,你仍然可以解码它并将其验证为数组,然后再次编码。Symfony有一个验证器服务,但我不知道如何在所有情况下正确使用它。
验证器服务的官方Symfony文档以及如何使用它可以在此链接中找到,它的锚:https://symfony.com/doc/current/validation.html
https://symfony.com/doc/current/validation.html#using-the-validator-service

PHP中JSON的一些信息:

json最典型的用途,甚至是从数据库更新和下载内容,是使用json_encode()json_decode(),这基本上可以帮助您在不同的用例中使阵列更具“可移植性”。
例如,在接受JSON类型的MySQL中,您可以通过使用JSON对数组进行编码来将数组插入到列中。

如果您想在Symfony中声明一个JSON类型变量,可以按照下面的示例进行:

/**
 * @ORM\Column(type="json", ...)
 */

private $yourColumn;

json_encode()json_decode()均从PHP v5.2.0开始提供
作为DB的一个示例,JSON类型在5.7.8https://dev.mysql.com/doc/refman/5.7/en/json.html)版本中被添加到MySQL中。
你应该看看这些链接:
https://www.php.net/manual/es/function.json-encode.php
https://www.php.net/manual/es/function.json-decode.php
https://www.w3schools.com/js/js_json_php.asp
https://dev.mysql.com/doc/refman/8.0/en/

xe55xuns

xe55xuns2#

下面是一个symfony 6.3的例子:

/**
     * @var string[]
     */
    #[Assert\Json(message: "You've entered an invalid Json.")]
    #[ORM\Column(type: Types::JSON)]
    private array $roles = [];

相关问题