pythonjson库方法_在python中实现Json序列化库的方法步骤

在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题。Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化。但是这种序列化仅支持python内置的基本类型。有很多种方法可以用来支持这种序列化,这里有一个很长的关于



e8bf2d5ccad4f335e989f64433f36ba0.jpg

在Python世界中,以json格式序列化或反序列化对象始终是一个问题。 Python标准库提供了用于json序列化的工具。 我们可以简单地使用json.dumps序列化一个对象。 但是此序列化仅支持python内置的基本类型。

有很多方法可以支持这种序列化,这里是关于此问题的长时间讨论。 总结起来,基本上有两个好主意:

使用标准库接口:从python标准json库中的JSONDecoder继承,然后自定义默认方法以自定义序列化过程

使用第三方库:例如jsonpickle,jsonweb,json-tricks等。

使用标准库接口的问题是我们需要制作一个 JSONDecoder.default接口很难实现代码重用。

使用第三方库,它不会干扰我们的代码,尤其是jsonpickle。 因为它是基于pickle标准序列化库实现的,所以它可以序列化任何对象,例如pickle,只需要一行即可,无需修改代码。

但是,当我们观察到此类第三方库的输出时,我们会发现所有这些库将在输出json中添加一个指示对象类型的特殊属性。 为什么是这样? Python是一种动态类型化的语言。 在构造对象之前,我们无法知道对象某个属性的类型信息。 为了支持反序列化,似乎我们必须这样做。 。

有些人可能认为这是可以理解的,似乎并不影响使用。 但是,当跨语言交流时,这将成为一个更加麻烦的问题。 例如,我们有一个用Python实现的API。 客户端发送一个json请求。 我们想在一个统一的地方将json反序列化为我们的Python代码的对象。 因为客户不知道服务器端的类型信息,此类类型信息无法添加到json请求中,这也导致此类类库在反序列化时遇到问题。

Can可以有一个比较完善的实现吗? 让我们看一下理想的json序列化库的要求:

我们希望简单地序列化任何self定义对象,仅添加一行代码,或者不添加任何代码

我们希望序列化的结果不会添加任何意外的属性

我们希望遵循指定的类型进行反序列化,并可以自动处理嵌套的自定义类。 仅定制类提供非常简单的支持,否则不需要支持。

我们希望能够反序列化它处理该属性不存在的情况,以便当我们添加某个属性时,我们可以设置默认值,以便对 如果有json库可以支持上述四点,则可以正确地反序列化旧版本

,这基本上是一个相对易于使用的库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值