JSON schema - 全量字段校验

JSON schema 基础

重点关键字:

type 取值:

在线校验地址:

https://www.jsonschemavalidator.net/

校验值的类型

json:

{
  "success": true,
  "code": 10000,
  "message": "操作成功",
  "data": {
    "name": "tom",
    "age": 18
  }
}

json schema:

{
  "type": "object",
  "property": {
    "success": {
      "type": "bollean"
    },
    "code": {
      "type": "integer"
    },
    "message": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "property": {
        "name": {
          "type": "string"
        },
        "age": {
          "type": "integer"
        }
      }
    }
  }
}

校验值等于

json:

{
	"code":1000
}

schema:

{
  "type": "object",
  "properties": {
    "code": {
      "const": 1000
    }
  }
}

正则表达式校验值

json:

{
  "message": "操作成功",
  "mobile": "15899998888"
}

json schema:

{
  "type": "object",
  "properties": {
    "message": {
      "pattern": "成功"
    },
    "mobile": {
      "pattern": "^1[0-9]{10}$"
    }
  }
}

在线校验综合案例:

json:

{
  "success": false,
  "code": 10000,
  "message": "xxx登录成功",
  "data": {
    "age": 20,
    "name": "lily"
  }
}

json schema:

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "code": {
      "type": "integer"
    },
    "message": {
      "pattern": "成功"
    },
    "data": {
      "type": "object",
      "properties": {"name": {"const": "lily"}, "age": {"const": "20"}},
      "required": ["name", "age"]
    }
  },
  "required": ["success", "code", "message", "data"]
}

python 实现json schema 校验

"""
import jsonschema
jsonschema.validate(实际结果的字典内容, schema校验规则的字典数据)
jsonschema.validate(instance, schema)
- instance: 要验证的JSON数据
- schema: 用于校验JSON数据的验证规则
"""
import unittest

import jsonschema
import requests


class TestLogin(unittest.TestCase):

    def test_login(self):
        url = "xxxxxxxxxxxxxxx"
        body = {
            'mobile': '15800000002',
            'password': '123456'
        }

        resp = requests.post(url, json=body)
        json_data = resp.json()

        # {'success': True, 'code': 10000, 'message': '操作成功!', 'data': '3e5b20bf-dbe9-49bf-bf56-f5dd04a92e2a'}
        print(json_data)

        json_schema = {
            "type": "object",
            "properties": {
                "success": {"type": "boolean"},
                "code": {"type": "integer"},
                "message": {"pattern": "成功"}
            },
            "required": ["success", "code", "message"]
        }

        jsonschema.validate(json_data, json_schema)
posted @ 2022-01-24 16:49  chuangzhou  阅读(445)  评论(0编辑  收藏  举报