Python | JSON(Dict)与Class转换

Python学习笔记(十五):dump序列化、JSON 序列化 pickle,转换为只有python能识别的字符串 pickle的功能 dump:转换后写入文件(如上图) dumps:只转换 load:从文件中读取数据,并转换数据(如上图) loads:只转换数据 JSON 将数据转化为json字符串 拥有的方法和序列化一样,dump,dumps,load,loads 转换class类实例 dump实例的_... 阅读详情

1. 前言

JSON⇔Dict⇔Class{JSON}\Leftrightarrow{Dict}\Leftrightarrow{Class}JSON⇔Dict⇔Class

这里主要讲的是Dict与Class转换,至于Dict与JSON字符串之前转换可以直接使用系统方法,如下

import json

d = {'name': 'yimt', 'age': 123, 'detail': {'phone': '123456789'}}

# Dict->JSON Str
s: str = json.dumps(d)

# JSON Str->Dict
d = json.loads(s)

2. 使用内置方法

Dict嵌套时会出现不符合预期的情况。

class Detail:
    phone: str

    def __str__(self):
        return f'phone={self.phone}'


class Person:
    name: str
    age: int
    detail: Detail

    def __str__(self):
        return f'name={self.name}, age={self.age}, detail=Detail({self.detail})'


if __name__ == '__main__':
    d = {'name': 'yimt', 'age': 123, 'detail': {'phone': '123456789'}}
    p: Person = Person()

    # Dict -> Class
    p.__dict__ = d
    print(p)  # Output: name=yimt, age=123, detail=Detail({'phone': '123456789'})

    # Class -> Dict
    print(p.__dict__)  # Output: {'name': 'yimt', 'age': 123, 'detail': {'phone': '123456789'}}

3. pydantic

嵌套的Dict转Class,Class转Dict

from pydantic import BaseModel


class Detail(BaseModel):
    phone: str

    def __str__(self):
        return f'phone={self.phone}'


class Person(BaseModel):
    name: str
    age: int
    detail: Detail

    def __str__(self):
        return f'name={self.name}, age={self.age}, detail=Detail({self.detail})'


if __name__ == '__main__':
    d = {'name': 'yimt', 'age': 123, 'detail': {'phone': '123456789'}}

    # Dict -> Class
    p: Person = Person(**d)
    print(p)  # name=yimt, age=123, detail=Detail(phone=123456789)

    # Class -> Dict
    print(p.json())  # Output: {"name": "yimt", "age": 123, "detail": {"phone": "123456789"}}
python 字典转成类 属性调用 python 字典转成类 构建类 阅读详情

相关推荐

Python入门实战:字典与类

1.背景介绍 “Python入门实战”系列主要面向初级及中级Python开发人员,内容包括了最基础、最重要的知识点,帮助读者快速入门并掌握Python编程技能,提升工作效率,加深对Python语言本质的理解。 本文即将发布的《Python入门实战:字典与类》主要关注于Python字典(Dictionary)和Python类(Class)的

AI架构师小马 338

一次搞定python中json与class对象互转

一次搞定python中json与class对象互转

空山新雨后,天气晚来秋 1897

python实现class对象转换成json/字典的方法

主要介绍了python实现class对象转换成json/字典的方法,结合实例形式分析了Python类型转换的相关技巧,需要的朋友可以参考下

Python 字典转类 dict to class

import json txt = '{"Success": true, "ErrorCode": null, "Message": null, "Data": null, "Data555": [1, 2, 3, 4, 5]}' TXT = DictToClass(json.loads(txt)) print(TXT.Success) print(TXT.Data555)

LiuPig 3359

逆向小记 bd-ticket-guard-client-cert | bd-ticket-guard-client-data 通过现象看本质

依然没什么花哨的直接解析出来,既然这是个X509证书,那么要么是服务器下发,要么是自己生成喽,但是如果是本地直接生成,那服务器还校验个鬼哦!既然是服务器下发的,那服务器又是怎么校验这个证书是自己下发的呢,这就要讲到CA验证了,首先根据上图我们发现证书的Issuer"(颁发者)是。怎么来的呢,因为涉及到逆向咱就不讲了,其实也是涉及到非对称加密的,就是客户端用私钥去签名数据,服务器用上传过去的证书公钥验签的过程!当服务器收到这个证书的时候,会做几件事,首先用自己的公钥解开签名获得解密后的证书hash。

2503_90751789的博客 1205

模仿学习算法——ATC / Diffusion Policy

最近又开始接触具身智能相关的一些工作,本文主要介绍三篇较为基础的用来做模仿学习的算法,后续有空再进一步学习分享RT系列和Pi0等文章ACT算法全称为Action Chunking with Transformers,发表于《Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware》,该论文主要内容为如何使用低成本的硬件和模仿学习算法来实的双手操作,我们主要对算法部分进行剖析ACT算法的网络结构如下图所示,使用的采用的是生成式模型VA

weixin_44580210的博客 5251

python 序列化 json_python如何序列化json数据

使用json模块提供的loads方法和dumps方法,可以很方便的载入和读取json数据格式。而在具体实际应用中,我们使用python数据格式是 string、list 或dict等,这类格式如何直接转换为json格式呢?可以借用python内部的__dict__ 字典方法将格式转换为json格式并读取,不带参数示例如下:一、不带参数的class类转化为jsonclass Foo(object):...

weixin_39640849的博客 82

STM32F103C8T6实战:从零搭建三相SPWM逆变器(附MATLAB仿真、PCB、源码)

本文详细介绍了如何使用STM32F103C8T6单片机从零搭建三相SPWM逆变器,涵盖硬件选型、PCB设计、SPWM算法实现及MATLAB仿真。项目提供完整的工程文件,包括源码、PCB设计和仿真模型,适合电子工程师和学生进行实践学习。通过本教程,读者可以掌握逆变器设计的核心技术和调试方法。

weixin_30458043的博客 451

python里class转换_python实现class对象转换成json/字典的方法

本文实例讲述了python实现class对象转换成json字典的方法。分享给大家供大家参考,具体如下:# -*- encoding: UTF-8 -*-class Student:name = ''age = 0def __init__(self, name, age):self.name = nameself.age = agedef convert_to_dict(obj):'''把Objec...

weixin_42584507的博客 751

AAAI2024最佳解读|FontDiffuser One-Shot Font Generation via Denoising Diffusion with Multi-Scal

本文提出了一种名为FontDiffuser的基于扩散的单次字体生成方法,旨在通过去噪扩散模型生成模仿参考图像风格的字体,同时保留源图像的内容。尽管现有的字体生成方法在性能上取得了一定的进展,但在处理复杂字符和大风格变化时仍面临挑战。FontDiffuser通过引入多尺度内容聚合(MCA)模块,有效结合不同尺度的全局和局部内容线索,从而增强复杂字符的笔画保留能力。此外,文章还提出了一种风格对比细化(SCR)模块,用于风格表示学习,利用风格提取器从图像中分离风格,并通过精心设计的风格对比损失来监督扩散模型。

haimianxiaobao11的博客 1190

CH7034B显示模块原理图设计,已量产

显示桥接板的价值,不在于简单把 RGB 排线换成另一种接口,而在于能否把并行视频、时钟、显示控制、模拟输出和辅助配置同时组织成稳定系统。当前这张 CH7034B 原理图就是这种思路:U3 CH7034B 作为核心桥接芯片,输入侧是 LCD_R0~R7、LCD_G0~G7、LCD_B0~B7、LCD_DE、LCD_HSYNC、LCD_VSYNC、LCD_CLK 与 LCD_BL,输出侧则通过 DAC0~DAC2 和 DDC_SC/DDC_SD 形成模拟显示接口边界。

不脱发的程序猿 161

Python学习:python对象转换json字符串

1.问题 json是网络传输比较简单易用。python中,json和dict对象可以相互转换,首先我们看下简单的dict对象转换。 student = { 'name': 'chaos', 'age': 18, 'school': { 'name': "tsinghua" } } print(json.dumps(student)) 输出为: {"name": "chaos", "age": 18, "school": {"name": "tsinghua

追风筝的人的专栏 5347

北斗导航 | 基于LSTM-KF融合的北斗卫星定位算法研究框架

针对北斗卫星导航系统在复杂环境下存在的多路径效应、非视距传播等问题,提出一种基于长短期记忆网络(LSTM)与卡尔曼滤波(KF)的组合定位算法。通过LSTM网络建模定位误差的非线性特征,结合卡尔曼滤波实现动态噪声抑制,构建"粗定位-LSTM校正-卡尔曼滤波优化"的三级处理架构。实验表明,融合算法较传统方法定位精度提升42.7%,均方根误差降低至1.2米。

尘世冰封的专栏 920

【python实现class对象转换成json/字典的方法】

python实现class对象转换成json/字典的方法

u012632105的博客 1777

ViT 实战 万字全攻略:从图像分类到医学影像,Transformer 重塑视觉 AI

摘要:本文深度解析 ViT(Vision Transformer)算法在视觉任务中的原理与实践,涵盖图像分类、目标检测、语义分割及医学影像分析四大领域。从理论出发,详细拆解图像分块、位置编码、Transformer 编码器等核心机制;通过 PyTorch 与 Timm 库实现模型构建、训练与优化,提供 CIFAR-10、Pascal VOC、Cityscapes 及医学数据集的完整代码示例。针对工业级部署,重点介绍模型量化、TensorRT 加速、Flask API 开发及 Docker 容器化方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1935

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python基础教程: json序列化详细用法介绍

d = dict(name=‘Kaven’, age=17, sex=‘Male’)print(json.dumps(d)) # {“name”: “Kaven”, “age”: 17, “sex”: “Male”}说明:dumps()方法返回一个str,内容就是标准的JSON。类似的,dump()方法可以直接把JSON写入一个 Object。要把JSON反序列化为Python对象,我们可以用loads()或者对应的load()方法,前者把JSON的字符串反序列化,后者从Object中读取字符串并反序列化

2401_83641533的博客 858

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

json文件读取及处理

读取json文件 with open('class.json','r')as fp: json_data = json.load(fp) print(len(json_data)) print('这是读取到文件数据的数据类型:', type(json_data)) 查看读取到的json文件类型 new_list = sorted(json_data, key=itemgetter('id')) #由dict组成的列表list排序方式 for i in new_list:

Fairy_lovely的博客 1656

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

如何在Python中表示一个对象!

关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android、Python、Java和Go,这个也是我们团队的主要技术栈。 Github: https://github.com/hylinux1024 微信公众号:终身开发者(angrycode) 在 Python中一切都是对象。如果要在 Python中表示一个对象,除了定义 class...

Pythoncxy的博客 404

廖雪峰python3教程官网_学习廖雪峰Python3教程的pytho

我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。Python提供了pickle模块来实现序列化。...

weixin_39749501的博客 133

python3基础教程廖雪峰云-学习廖雪峰Python3教程的pytho

我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。Python提供了pickle模块来实现序列化。...

weixin_37988176的博客 489

csv,json格式数据的读写

#!python3 # -*- coding:utf-8 -*- #CSV stands for "comma-separated values",and CSV files are simplified spreadsheets stored as plaintext files. #CSV 以文本的形式存储Excel类型的数据,每个数据以逗号分隔 #JSON(is short ...

weixin_33716154的博客 377

python之json和dict转换

import json dict = {'id':1, 'name':'alan', 'sex':'man'} # dict_to_json json_data = json.dumps(dict) # json_to_dict dict_data = json.loads(json_data) # 字典转json然后写入到文件,文件不存在自动创建 with open('a.json', 'w') as f: json.dump(dict, f) # 读取json文件转换为dict wit

zwwzzwwz1的博客 401

Python之dict(或对象)与json之间的互相转化 及 dict datetime转json问题

Python之dict(或对象)与json之间的互相转化 在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作。 在Python中自带json库。通过import json导入。 在json模块有2个方法, loads():将json数据转化成dict数据 dumps():将dict数据转化成json数据 load():读取json文件数据,转成dict数据 dump():将dict数据转化成json数据后写入json文件 问题:Object of type '

西卡卡的博客 730

python json转对象_如何将JSON数据转换为Python对象

检查出标题为专业JSON对象解码中json 模块文档。您可以使用它来将JSON对象解码为特定的Python类型。这是一个例子:class User(object):def __init__(self, name, username):self.name = nameself.username = usernameimport jsondef object_decoder(obj):if '__ty...

weixin_39533361的博客 477
上一篇: 镜像 | 镜像站及常用软件源配置
下一篇: Docker | COPY *只复制文件
yimtcode
博客等级 码龄6年 205粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值