如何实现字典的无损序列化与反序列化
python字典和json的转换一直是让人头疼的问题,主要问题有:
1、 int类型的键序列化后会变为str类型。
2、 tuple类型的键无法序列化,导致报错。
3、 tuple值会被转为list。
今天教大家怎么实现python和json的无损转换,以后再也不用担心格式不符的问题。
1、 首先定义一个json序列化类JsonConver,之后所有的方法都在此类下编写,且都定义为静态方法(@staticmethod)。
2、 解决int和tuple元素的问题。由于int类型只需要处理键,而tuple类型键和值都需要处理,为了通用性,int和tuple的键值全部进行处理。
处理的原理是:迭代字典中所有的键值,检测到int、tuple类型,处理为可以安全保存的字符串类型,并添加特定后缀。
代码如下:
3、迭代和递归处理整个字典,字典中所有键值、包含多层嵌套里的 元素,全部处理。代码如下:
4、检查代码运行结果:
可见完美的处理了所有tuple和int。
之后这个字典就可以安全的转为json了。
5、反序列化
同样的原理,编写反转tuple和int的函数
6、迭代反序列化整个字典
7、检查运行结果:
可以观察到,结果完全正确。
8、加入其他转换函数
(1)经典UnicodeConvert。相信大家都眼熟,不再赘述。
(2)字典到json
(3)json到字典
首先,需要处理掉json中可能带有的注释。(这一步可省略)
然后是转换代码
9、结果验证:
完结撒花。
疑问反馈
欢迎广大开发者扫码加入QQ频道【我的世界开发者】,若对开发者工具有任何疑问或反馈,可以联系我们!
使用手机QQ扫描二维码加入频道
按照验证要求输入开发者昵称+邮箱
将“我的世界Minecraft开发者”设为星标
↓第一时间掌握开发圈新鲜事↓
关注“我的世界Minecraft开发者”,世界在你手中
戳戳在看/点赞
了解最新更新资讯!