首页 > 编程语言 >Python中数据类转换为JSON的方法

Python中数据类转换为JSON的方法

时间:2023-09-18 19:46:29浏览次数:38  
标签:转换 name Python JSON 数据传输 dataclass id

dataclass 到 Python 中的 JSON

JavaScript Object Notation或JSON表示使用编程语言中的文本组成的脚本(可执行)文件来存储和传输数据。

Python通过JSON内置模块支持JSON。因此,我们在Python脚本中导入JSON包,以利用这一能力。

JSON中使用的引号字符串包含了键值映射中的值。它与Python的字典相类似。

Python原生支持JSON特性,JSON显示的API类似于标准库中marshal和pickle模块的用户。

另一方面,dataclass ,创建数据传输对象,用于在其中存储数据;这些对象需要适当的定义方法进行等价比较,有时也用于显示。

dataclass 是用来为数据传输类创建方法和简短的语法的。

实现dataclass ,作为一个字典

Python 3.7及以后的版本是唯一支持dataclass 装饰器的版本。它产生一个对象,通常被称为数据传输对象,其唯一功能是存储数据。

问题是,为这些对象提供正确的功能,就必须创建平等比较、显示等方法。

这些方法的开发必须耗费大量的人力物力,而且容易出现错误。一个dataclass ,为你产生所有这些方法,给数据传输类一个简短的语法。

它在序列化方面使用了一个稍有改变的(在某种程度上更有效)的dataclasses.asdict 。

你正在迭代dataclass 字段,当第一次将JSON反序列化到dataclass 实例时,为每个注释的类型创建一个解析器,使这个过程在重复时更加有效。

为每个JSONroot 节点创建一个dataclass

由于"users" 字段是一个有"id" 和"name" 的对象数组,我们可以看到我们需要构建两个类:"Test" 和"User" 。

示例代码:

from dataclasses import dataclass
from typing import List
@dataclass
class User:
    id: 1
    name: "Kelvin"
@dataclass
class Test:
    id: 2
    userid:" Jack"
users: List[User]

每个JSON属性都应该被映射到一个类型安全的Python属性。

下面的代码将每个JSON节点和属性映射到Python类和属性中。要做到这一点,我们在Python类中创建一个static 方法,负责将我们的字典映射到你的Python属性。

示例代码:

from typing import List
from dataclasses import dataclass, asdict, field
from json import dumps
@dataclass
#Python小白学习交流群:153708845
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"}

请记住,数据传输对象是由dataclasses ,用于在其中存储数据。因此,这些对象需要正确的方法定义,以便进行平等的比较,偶尔也需要进行显示。

数据传输类的方法和语法是用dataclass 。

标签:转换,name,Python,JSON,数据传输,dataclass,id
From: https://www.cnblogs.com/djdjdj123/p/17712877.html

相关文章

  • Python教程:@符号的用法
    @符号在Python中最常见的使用情况是在装饰器中。一个装饰器可以让你改变一个函数或类的行为。@符号也可以作为一个数学运算符使用,因为它可以在Python中乘以矩阵。本教程将教你如何使用Python的@符号。装饰器中使用@符号装饰器是一个接受一个函数作为参数的函数,向其添加......
  • Python中装饰器的顺序
    什么是装饰器,它们如何被使用,以及我们如何利用它们来构建代码。我们将看到装饰器是如何成为一个强大的工具,可以用来为我们的应用程序添加功能,并且可以在Python编程语言中找到。装饰器顺序在Python中,装饰器是一个特殊的函数,可以修改另一个函数的行为。装饰器是一种设计模式,它在不......
  • Python学习笔记
    Python语言是一种解释性、面向对象、动态数据类型的高级程序设计语言创始人:吉多,荷兰人时间:1989编写的,1991公开发行Python语言特点开源、免费面向过程、面向对象、交互式编程面向过程:以事情或解决问题的过程为中心,主要考虑解决问题的思路和步骤面向对象:以事务为中心,主要考虑解决问......
  • Python(二)
    字典字典属于无序、可变的数据类型以键:值的方式存储、通过键来访问字典的值说明:字典以花括号{}括起来的数据集合,不同数据间以“,”分隔,每个数据以“键:值”的形式表达语法格式:#创建字典字典名={键1:值1,键2:值2,键3:值3,键4:值4,…}#常用字典名=dict(键1=值1,键2......
  • Go比Python快多少倍?请看一个简单的例子
    需求两个0-10000的数组,循环遍历两个数组,获取两个元素,打印出乘积为56213的所有元素Python实现importdatetimes=datetime.datetime.now()foriinrange(10000):forjinrange(10000):ifi*j==56213:print(f"{i}*{......
  • 2022年07月 python界面可视化 VS2022配置PyQt5环境
    文章目录 一、VS2022配置PyQt5环境1.安装anaconda及opencv-python1.1安装对应的anaconda包1.2安装opencv-python2.安装PyQt53.安装PyQt常用工具4.配置系统环境变量5.配置VS2022中的外部工具6.第一个VS2022下的pyqt5程序一、VS2022配置PyQt5环境本机环境:......
  • Python实现数据采集
    前提是配置好hadoop的相关环境1、分析网页,确定采集的数据我们需要获取到该网页的如下几个信息:请求信息:url——网站页面地址设置这个请求的请求头:headers——(user-agent/referer/origin/cookie)设置这个请求的传递数据:data——(first/pn/kd)------>解决编码如下图所示:先安装......
  • Python 3
    1.查看版本python-V第一个Python3.x程序Python常用文件扩展名为 .py。Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python......
  • Python 之 爬虫实战 -- 爬某音乐歌曲及评论信息
    使用Selenium爬某音乐歌曲及评论信息啦~Selenium简单介绍1)简介Selenium是一个用于测试网站的自动化测试工具,支持各种主流界面浏览器。简而言之,Selenium是一个用来做网站自动化测试的库,它的定位是做自动化测试的。我们也可以利用它来做爬虫,获取一些网页信息,并且这种爬虫是模......
  • Python 之 爬虫实战 -- 免费音乐下载器
    【Tkinter界面化小程序】用Python做一款免费音乐下载器、无广告无弹窗、清爽超流畅哦~思路进入某音乐主页输入任意歌手,比如李XX为列。音乐从哪里来?---网站的服务器里怎么从网址里得到音乐?---向网站发起网络请求最后用tkinter做成一个界面下载框即可环境本文用到的环境如下:P......