python json loads dumps_python中json.dumps和json.loads的使用

本文介绍了如何在Python中使用json.dumps和json.loads进行序列化和反序列化,包括处理嵌套的类实例。示例中创建了一个Building类和一个Unit类,然后将Building实例转换为JSON字符串,再将其反序列化回Building类的对象。
摘要由CSDN通过智能技术生成

今天学习到了python的序列化和反序列化,于是就试着写了一个例子,淡然我这里写的不是简单的把衣蛾dict转换成json字符串和json字符串反序列化成dict,我自己用了点时间写成功了class转json和json反序列化成class的一个demo,在这里记录一下并且和大家分享一下。

1. 第一步先建一个用于序列化的class,名字我取了叫Building.py

class Building(object):

def __init__(self, name, unit, floors):

self.name = name

self.unit = unit

self.floors = floors

这个类没什么特殊的,就定义了三个字段,第1个字段就是一个字符串,第2个字段其实是我定义的另外一个class,我是为了测试class嵌套的序列化效果,第3个字段是一个字符串数组,下面我把Unit.py贴出来

class Unit(object):

def __init__(self, name):

self.name = name

在Unit里就定义了一个字符串字段。

2. 第二步就是序列化的过程了

首先顶一个Building的实例

building = Building('来福士', Unit('number one'), ['1', '2', '3'])

下面去序列化这个building成json字符串

building_json = json.dumps(building, default=lambda obj: obj.__dict__)

print('Dump Student:', building_json)

这个代码执行结果如下:

Dump Student: {"name": "\u6765\u798f\u58eb", "unit": {"name": "number one"}, "floors": ["1", "2", "3"]}

通过结果看出来,最终成功将类序列化成json字符串,并且每个字段都包含在内。但往往序列化和反序列化是并存的,因为我们实际应用过程中是需要这样做,下面我们来说反序列化的过程。

3. 反序列化

building_obj = json.loads(building_json, object_hook=lambda d: namedtuple('X', d.keys())(*d.values()))

print(building_obj.unit.name)

ok,这样直接又将上边序列化的json String 反序列化成我们定义的Building class了,例子中只打印了unit里的name,这足以表明我们反序列化成功了。

0

0

vote

Article Rating

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值