如何在 Python3 中验证 json 结构

Par*_*eog 2 python django validation json

我使用 Python3.5 和 Django 作为 web api。当我提到输入时,我指的是一个 HTTP 请求参数。我有一个参数,我需要一个 JSON 数据,我需要在进一步处理之前对其进行验证。

我有一个基本的 json 结构,输入必须在其中。例如,

{
  "error": "bool",
  "data": [
      {
        "name": "string",
        "age": "number"
      },
      {
        "name": "string",
        "age": "number"
      },
      ...
    ]
}
Run Code Online (Sandbox Code Playgroud)

以上JSON表示我希望输入的结构。键是预定义的,值表示我期望的键的数据类型。我遇到了一个执行此验证的 Python 库(jsonschema),但我找不到任何可以处理动态数据的文档。即 JSON 数组 'data' 中的对象可以是任意数量,当然这是我想出的最简单的场景来解释基本要求。在这种情况下,我如何验证我的json?

这里的解决方案没有帮助,因为它只是根据 Django 模型检查 json 是否正确。我的 json 与 Django 模型没有关系。它是一个简单的json结构。它仍然没有告诉我如何验证动态对象

Dan*_*man 5

JSON Schema 是用于验证 JSON 的规范;jsonschema 只是一个实现它的 Python 库。它当然允许您指定一个键可以包含任意数量的元素。

验证您的代码的 JSON 架构示例可能是:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "error",
    "data"
  ],
  "properties": {
    "error": {
      "type": "boolean"
    },
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "age": {
            "type": "integer"
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

请参阅https://spacetelescope.github.io/understanding-json-schema/以获得一个很好的概述


Nat*_*rad -1

查看Python 的 JSON API的文档。我相信json.tool这就是您正在寻找的,但是还有一些其他方法可以使用该 API 验证 JSON。