【问题标题】:How do I create JSON type in entity in Symfony如何在 Symfony 中的实体中创建 JSON 类型
【发布时间】:2022-01-06 15:58:17
【问题描述】:

我实际上正在寻找一种方法来验证 json 中的元素。我认为有一种方法可以将它们列出来严格避免接受错误的元素。例如,有人可以发送 "sex": "male" 而不是下图所示的 "gender": "male",而我正试图避免它。

我有一个名为 Profile

的数据字段(列)

profile = {'name': 'Payne', 'gender': 'male', 'favourites': [{'drinks': 'soda'}, {'colour': 'blue'}, {'game': 'scrabble'}], 'dob': '1962'}

我正在使用第三方 API 使用 HttpClient 填充数据库。

我的响应是返回 JSON,我想用它做出一些决定并将其存储在数据库中,但我需要严格验证它是否符合预期。

【问题讨论】:

  • JSON 不是“类型”,只是一种数据交换格式。您可以将 JSON 存储为字符串,或对其进行解码并将其存储为更复杂的类型(数组、对象等)。或者使用它的内容来填充其他东西。这取决于您,以及您的应用程序的需求和设计。
  • 有一种方法,将其解码并验证为对象/数组。
  • 你能用上面的例子演示一下吗?

标签: symfony


【解决方案1】:

关于验证:

如果您知道如何处理数组,您仍然可以将其解码并验证为数组,然后再次对其进行编码。 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 的示例,MySQL 在版本 5.7.8 (https://dev.mysql.com/doc/refman/5.7/en/json.html) 中添加了 JSON 类型


您应该看看这些链接

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/

【讨论】:

  • 非常感谢!我很清楚。我实际上正在寻找一种方法来验证 json 中的元素。我认为可以将它们列出来严格避免接受错误的元素。例如,有人可以发送“sex”:“male”,而不是“gender”:“male”
  • 如果您知道如何处理数组,您仍然可以将其解码并验证为数组,然后再次对其进行编码。 Symfony 有一个验证器服务,但我不知道如何在所有情况下正确使用它。 symfony.com/doc/current/…
猜你喜欢
  • 2021-04-01
  • 2018-06-04
  • 2021-11-25
  • 2012-02-03
  • 1970-01-01
  • 2017-05-14
  • 2017-05-07
  • 2010-09-11
  • 1970-01-01
相关资源
最近更新 更多