轻松将您的 Python 类转换为 JSON 对象。
项目描述
可自定义的
Jsonizable 是一个 python 库,它允许将 json 对象解析为 python 类,反之亦然。这对于处理返回长 JSON 对象的复杂 API 非常有帮助。
Jsonizable 类允许用户在外部服务器接收到的 JSON 中插入逻辑,它在数据完整性检查中非常有用,只有两种方法write和read.
指导:
快速开始
使用此包的推荐方法是为每个类定义数据模式。为此,我们需要Meta在我们的对象中实现一个类,并在其中定义一个schema,它是一个包含我们 JSON 对象的名称和类型的字典。
class Car(Jsonizable):
class Meta:
schema = dict(
name=str,
model=str,
year=int,
max_speed=float,
is_new=bool,
)
通过这样做,我们将能够将Car对象解析并序列化为 JSON。
json = {
"name": 'Tesla',
"model": 'v6',
"year": 2017,
"max_speed": 186.63,
"is_new": True,
}
# Parse the JSON object into a car
my_car = Car(json=json)
print(my_car.name)
>> Tesla
print(my_car.year)
>> 2017
#Serialize the Car into a JSON object
my_car.write()
>> { "name": "Tesla", "model": "v6", "year": 2017, "max_speed": 186.63, "is_new": True }
收藏品
也可以为我们的 Jsonized 类定义集合。我们可以用泛型类型定义字典、元组和列表:
class MyJsonizableClass(Jsonizable):
class Meta:
schema = dict(
some_list=list,
some_tuple=tuple,
some_dict=dict,
)
json = {
some_list: [1, 2, "Forest", 4],
some_tuple: [1, 2.23, 3, "hello"],
some_dict: {
"name": "John Doe",
4: "Martin Lee",
},
}
obj = MyJsonizableClass(json=json)
我们将再次收到一个带有内部参数的对象。
但是,在大多数情况下,我们希望为集合提供一个类型,该类型将被检查。我们可以强制类型如下:
class Lottery(Jsonizable):
class Meta:
schema=dict(
first_prize=int,
second_prizes=[int],
third_prizes=(int, ),
)
json = {
"first_prize": 24666123,
"second_prizes": [1244123, 4551235512, 32341234],
"third_prizes": [2344123, 412555123, 234444512, 12333415],
}
obj = Lottery(json=json)
可选参数
有时我们的对象会有一些可选参数,显然无法将其发送None到 API,因为验证器会立即爆炸。在这种情况下,我们可能想要定义可选参数,为此我们将使用问号结束参数名称,my_param?如下例所示:
class MyQuanticClass(Jsonizable):
class Meta:
schema={
"name": str, # This is mandatory parameter
"state?": int, # This is an optional parameter
}
json1 = {
"name": "Electron",
}
class1 = MyQuanticClass(json=json1)
json2 = {
"name": "Proton",
"state": 3,
}
class2 = MyQuanticClass(json=json2)
像魅力一样工作;)。
嵌套对象
好的,到现在为止都很容易,简单的对象和简单的界面。当我们处理讨厌的硬嵌套对象时会发生什么。为此,您可以简单地定义对象的层次结构并告诉父母儿子的类型。(最好举个例子,对吧?)
# Define a parent class
class PetShop(Jsonizable):
class Meta:
schema={
"name": str,
"pets": [Pet],
}
# Define the subclass
class Pet(Jsonizable):
class Meta:
schema={
"species": str,
"name": str,
"price": float,
}
json={
"name": "Funny puppies",
"pets": [
{
"species": "dog",
"name": "Tobby",
"price": 150,
},
{
"species": "bird",
"name": "Mr. Tingles",
"price": 20,
}
]
}
pet_shop = PetShop(json=json)
print(pet_shop.pets[1].name)
>> Mr. Tingles
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
jsonizable-1.0.4.tar.gz
(5.0 kB
查看哈希)
内置分布
jsonizable-1.0.4-py3-none-any.whl
(6.6 kB
查看哈希)
关
jsonizable -1.0.4.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 5cb96872a04d6910d64ca411d4f3ff430243ffe37fe2bfc6e555d606274cc847 |
|
| MD5 | 6371d64ef45e19bacecfbfc28060c985 |
|
| 布莱克2-256 | 7841d5f8e21b7b57c0b7343c73617141f9b72e1913b97ce4e7c449b4138291a9 |
关
jsonizable -1.0.4-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 531e3eba10ba1c144a2930bf0763eebbbd3756c9fe08c2bb0d555d7b4e37591a |
|
| MD5 | 1d2f7d5108ad8ab78d6194661f009ecb |
|
| 布莱克2-256 | 5e6c5107b6b1f0c741d91daffb8b337db2b8c269df41edb57acb967951c5a43d |