很容易将python类转换为json对象。

jsonizable的Python项目详细描述


j可电离

jsoninable是一个python库,它允许将json对象解析为python类,反之亦然。这对于处理返回长json对象的复杂api非常有用。

jsonisable类允许用户在外部服务器接收到的json中插入逻辑,它在数据完整性检查中非常有用,只需要使用两个方法writeread

指南:

快速启动

建议使用此包的方法是为每个类定义数据架构。为此,我们需要在对象中实现一个Meta类,并定义一个schema,这是一个包含json对象的名称和类型的字典。

classCar(Jsonizable):classMeta: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 carmy_car=Car(json=json)print(my_car.name)>>Teslaprint(my_car.year)>>2017#Serialize the Car into a JSON objectmy_car.write()>>{"name":"Tesla","model":"v6","year":2017,"max_speed":186.63,"is_new":True}

收藏

还可以为jsonized类定义集合。我们可以用泛型类型定义字典、元组和列表:

classMyJsonizableClass(Jsonizable):classMeta: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)

我们将再次收到一个具有内部参数的对象。

但是,在大多数情况下,我们希望为集合提供一个类型,该类型将被检查。我们可以强制执行以下类型:

classLottery(Jsonizable):classMeta: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?结束参数名称,如下所示:

classMyQuanticClass(Jsonizable):classMeta: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 classclassPetShop(Jsonizable):classMeta:schema={"name":str,"pets":[Pet],}# Define the subclassclassPet(Jsonizable):classMeta: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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Admob不使用webview   Java Wicket表单:序列化对象类“myClassName”时出错   java googledriveapi更新文件与我的帐户管理员   java简单框架未知xml标记解析   java如何使用主类和用户获取Spark应用程序ID   java如何更改自定义属性的值?   java有没有办法在jMock中找到未使用的期望值?   gradle运行任务的java文档?   java通过使用数组来存储文本文件的行,通过覆盖来删除文本文件中的行   用于表达式语言注入的java利用负载   java IDEStyle程序运行   java在运行时启用/禁用Springws   爪哇芦苇。formatNumber NullPointException   java为什么我的代码无法检测两个动态实体之间的碰撞?