红石公司《如何实现字典的无损序列化与反序列化》

文摘   2024-09-19 16:18   上海  

如何实现字典的无损序列化与反序列化

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开发者”,世界在你手中


戳戳在看/点赞

了解最新更新资讯!


 最新文章