带有类型提示的python的json解码(pep 484)
typedjson的Python项目详细描述
键入djson
带有类型提示的python的json解码(pep 484)。
要求和限制
- python=3.6
- 使用非泛型或参数化类解码json。
- 使用不带前向引用的类型提示。
功能
- 支持如下解码类型:
- 原始类型如
str
、int
、float
、bool
和None
。 Union
和Optional
。- 同质和异质
Tuple
和List
。 - 可变长度
Tuple
。 - 非泛型和参数化数据类。
- 原始类型如
- 支持类似于
json.load
和json.loads
的api。
示例
fromtypingimportOptionalimporttypedjsonfromdataclassesimportdataclass@dataclass(frozen=True)classNameJson:first:strlast:Optional[str]@dataclass(frozen=True)classCatJson:id:strage:intname:Optional[NameJson]json={'id':'test-cat','age':13,'name':{'first':'Jiji',},}print(typedjson.decode(CatJson,json))# Output: CatJson(id='test-cat', age=13, name=NameJson(first='Jiji', last=None))print(typedjson.decode(CatJson,{}))# Output: DecodingError(TypeMismatch(('id',)))
详情请参阅test codes。
贡献
请阅读CONTRIBUTING.md。
待办事项
- 禁止显式解码
Set
和Dict
。 - 提供API文档。
- 解释typedjson为什么使用未记录的api。
- 解释typedjson解决了什么问题。
- 改进api,使其像
json.dump
和json.dumps
那样转储。- 提供mypy插件来检查类是否可以用
@typedjson.encodable
decorator编码为json。
- 提供mypy插件来检查类是否可以用
- 支持带有前向引用的类型提示。