跳转到主要内容

简单验证/转换传入的JSON数据的方式。

项目描述

from datetime import datetime
from verity import Type, field

def parse_date(value):
    return datetime.strptime(value, '%Y-%m-%d').date()

class Person(Type):
    name = field(str)
    birthdate = field(parse_date)
>>> data = {'name': 'Bob', 'birthdate': '1980-12-21'}
>>> person = Person(data)
>>> person.birthdate
datetime.date(1980, 12, 21)

类型是可嵌套的

class Food(Type):
    name = field(str)
    energy = field(float)


class Person(Type):
    name = field(str)
    birthdate = field(parse_date)
    favourite_food = field(Food)
>>> data = {'name': 'Bob', 'birthdate': '1980-12-21', 'favourite_food': {'name': 'Pizza', 'energy': '1200'}}
>>> person = Person(**data)
>>> person.favourite_food.name
'Pizza'

类型可以JSON化自身

>>> person.__json__()
{'name': 'Bob', 'birthdate': datetime.date(1980, 12, 21), 'favourite_food': Food()}

尽管它不是递归的。

然而,它可以与 json_default 协作

>>> from verity import json
>>> json.dumps(person)
'{"birthdate": "1980-12-21", "favourite_food": {"energy": 1200.0, "name": "Pizza"}, "name": "Bob"}'

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

verity-0.1.tar.gz (3.4 kB 查看哈希值)

上传时间:

构建分布

verity-0.1-py2.py3-none-any.whl (4.1 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持