python中关于JSON类型注解表示方法
2023-12-02 本文已影响0人
进击的原点
python的类型标注(Type annotations)是python 3.6之后的一个新版功能,它的作用是在调用函数时告诉你需要传递哪些参数类型以及输入输出所需要的数据类型。理解它将非常有益于优化你的代码。
如果我们要表示JSON类型,如何能清楚有效地表示该类型是个头大的问题,因为python的typing包没有关于json类型的hint。但是我们可以通过一些原生类型组合构造来表示。
以下代码可以参考:
python3.10之前:
# A few handy JSON types
from typing import Union
JSON = Union[int, str, float, bool, None, dict[str, "JSON"], list["JSON"]]
JSONObject = dict[str, JSON]
JSONList = list[JSON]
python 3.10之后:
# A few handy JSON types
JSON = int | str | float | bool | None | dict[str, "JSON"] | list["JSON"]
JSONObject = dict[str, JSON]
JSONList = list[JSON]
def http_get_sync(url: str) -> JSONObject:
response = requests.get(url)
return response.json()
这里用python的递归类提示来表达JSON这个数据类型。首先我们定义JSON类型名,它可以接受为int, str, float, bool和str为键,自身JSON类型为值的字典。这样就可以实现对嵌套字典的递归类型提示。 而JSONObject是一组由str和JSON类型组成的字典类型。这种方式可以帮助您在函数参数和返回值中清晰地定义嵌套字典的结构,使代码更易于理解和维护。注意上面类型标注python 3.10之前和之后有不同的写法。