迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

将 Python 类对象序列化为 JSON

作者:迹忆客 最近更新:2023/04/25 浏览次数:

本教程介绍序列化过程。 它还说明了我们如何使用 toJSON() 方法使 JSON 类可序列化,并包装 JSON 以转储到其类中。


Python 中的序列化

序列化过程涉及将对象转换为可以保存和以后检索的格式。 例如通过将对象的状态记录到文件中。

所有开发人员都必须在某个时候对所有项目进行序列化,即使这些项目非常复杂。 Python 编程语言在许多典型编程工作中的简单性是其出色的特性之一。

只需几行代码,文件 IO、绘制图形和访问在线内容都变得简单。 同样,python 使序列化变得简单,除非尝试序列化自定义类。

让我们在下面学习如何将类对象序列化为 JSON 对象。


使 Python 类 JSON 可序列化

Python 的内置 json 模块只能处理具有直接 JSON 对应物的 Python 基本类型。

明确地说,JSON 编码器 json.dump() 和 json.dumps() 的默认功能仅限于序列化最基本的一组对象类型(例如,字典、列表、字符串、数字、None 等)。

为了解决这个问题,我们必须创建一个独特的编码器,使我们的类 JSON 可以序列化。

可以通过各种方法使 Python 类 JSON 可序列化。 选择最适合您情况复杂性的选项。

下面给出了使 JSON 类可序列化的两种主要方法:

  1. toJSON() 方法
  2. 包装 JSON 以转储到其类中

使用 toJSON() 方法使 JSON 类可序列化

我们可以实现序列化器方法而不是 JSON 可序列化类。 例如,在此方法中,Object 类可能有一个返回 Object 信息字典的 JSON 函数。

由于所有 Object 属性都是本机类型,我们可以将此字典发送到编码函数中以获得 JSON 表示法。 最后,我们返回构成对象的属性值。

import json

class Object:
    def toJSON(self):
        return json.dumps(self, default=lambda o: o.__dict__,sort_keys=True, indent=4)

me = Object()
me.name = "kelvin"
me.age = 20
me.dog = Object()
me.dog.name = "Brunno"
print(me.toJSON())
Output:

{
    "age": 20,
    "dog": {
        "name": "Brunno"
    },
    "name": "kelvin"
}

包装 JSON 以在其类中转储

另一种解决方案是子类化 JsonSerializable 类以创建包装 JSON 转储的 FileItem 类,如以下代码所示。

示例代码:

from typing import List
from dataclasses import dataclass, asdict, field
from json import dumps

@dataclass
class Students:
    id: 1
    name: "stu1"

    @property
    def __dict__(self):
        return asdict(self)

    @property
    def json(self):
        return dumps(self.__dict__)

test_object_1 = Students(id=1, name="Kelvin")
print(test_object_1.json)

输出:

{"id": 1, "name": "Kelvin"}

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便