Django/python 验证 JSON
Posted
技术标签:
【中文标题】Django/python 验证 JSON【英文标题】:Django/ python validate JSON 【发布时间】:2012-02-17 00:12:20 【问题描述】:在 Django/python 中验证 JSON 数据的最佳方法是什么。
最好创建一堆类,比如 Django FormMixin 类来验证传入的数据/参数吗?
执行此操作的最佳 DRY 方法是什么?我可以利用现有的应用吗?
我想接收 JSON 数据并对我的模型实例执行一些操作/更新。我接收的数据不是用户生成的——也就是说它们是 id 和标志(没有文本),所以我不想使用 Forms。
【问题讨论】:
不太清楚你的意思 - 你想验证一个字符串并确保它是有效的 JSON 吗?您是否要获取 JSON 对象并确保数据类型正确(例如 data.intVal 是整数值)?还是别的什么? 我想确保它们是有效的数据类型......但还要确保它包含正确的键、值对。但我想要一种通用的 DRY 方式来执行此操作,因为需要存在的键值对会根据我正在处理的模型而有所不同。类似于 Django Forms 的方式。 【参考方案1】:我只是从 json 数据中实例化一个模型对象并在模型上调用 full_clean() 来验证:https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.full_clean
m = myModel(**jsondata)
m.full_clean()
【讨论】:
【参考方案2】:validictory 将 json 验证为 json 模式。有用。当然,现在您需要在 json 中定义您的模式,这对于您想要做的事情可能有点多,但它确实有它的位置。
【讨论】:
相当不错的图书馆。值得一试【参考方案3】:我会为此 https://github.com/j2labs/dictshield 推荐一个名为 DictShield 的 python 库
DictShield 是一个与数据库无关的建模系统。它提供了一种轻松建模、验证和重塑数据的方法。
甚至还有一个用于进行 JSON 验证的示例:
验证用户输入
假设我们从用户那里得到这个 JSON 字符串。
"bio": "Python、Erlang 和吉他!", "secret": "e8b5d682452313a6142c10b045a9a135", "name": "J2D2"
我们可能会编写一些如下所示的服务器代码:
json_string = request.get_arg('data')
user_input = json.loads(json_string)
user.validate(**user_input)
【讨论】:
Dictshield 看起来很不错,但从它的描述来看,它是一个模型数据库(并且也有验证),而不仅仅是验证它。以上是关于Django/python 验证 JSON的主要内容,如果未能解决你的问题,请参考以下文章