Python-json模块

news2024/12/24 21:34:49

一、相关概念

# 序列号 和反序列号
# 序列号:把内存中的数据类型转成一种特定格式,这种格式(json/pickle)可以用于存储,或者传输给其他平台
import json

# 内存中是数据类型 ----> 序列化 ----> 特定格式(json/pickle)
# 内存中是数据类型 <---- 反序列化 <---- 特定格式(json/pickle)

# 用途:
# 1) 保存程序运行状态(存档)
# 2)跨平台数据交互(只能交互共有的数据类型),例:Java --- Python,只能用json,pickle是Python专用格式

二、json模块

json 是一种通用格式,只能序列化所有编程语言都支持的数据类型;

1、序列化

(1)第一种方式

dic = {'name': '李元芳', 'age': 27, 'salary': 30, 'married': False, 'hobbies': '大人此事必有蹊跷'}
json_res = json.dumps(dic)
json_res1 = json.dumps(dic,ensure_ascii=False) # 确保所有字符能够用ASCII码表示
with open('data/test.json',mode='wt',encoding='utf-8') as f:
    f.write(json_res)

print(json_res, type(json_res))
print(json_res1, type(json_res1))

运行结果:

{"name": "\u674e\u5143\u82b3", "age": 27, "salary": 30, "married": false, "hobbies": "\u5927\u4eba\u6b64\u4e8b\u5fc5\u6709\u8e4a\u8df7"} <class 'str'>
{"name": "李元芳", "age": 27, "salary": 30, "married": false, "hobbies": "大人此事必有蹊跷"} <class 'str'>
 

{"name": "\u674e\u5143\u82b3";双引号是所有编程语言通用的语法,汉字编程unicode格式二进制,这个可以控制

 (2)第二种方式

dic = {'name': '李元芳', 'age': 27, 'salary': 30, 'married': False, 'hobbies': '大人此事必有蹊跷'}
with open('data/test.json', mode='wt', encoding='utf-8') as f:
    json.dump(dic, f,ensure_ascii= False)  # 将序列化对象传给 f

2、 反序列化

(1)第一种方式

dic = json.loads('{"name": "李元芳", "age": 27, "salary": 30, "married": false, "hobbies": "大人此事必有蹊跷"}')
print(dic, type(dic))
# 从json文件中取值
with open('data/test.json',mode='rt',encoding='utf-8') as f:
    json_res = f.read()
dic = json.loads(json_res)
print(dic, type(dic))

运行结果:

{'name': '李元芳', 'age': 27, 'salary': 30, 'married': False, 'hobbies': '大人此事必有蹊跷'} <class 'dict'>

 (2)第二种方式

with open('data/test.json',mode='rt',encoding='utf-8') as f:
    json_res = json.load(f)
print(json_res)

注:

json.dumps({1,2,3})

TypeError: Object of type set is not JSON serializable


三、pickle模块

dic = {
    'name': '李元芳',
    'age': 27,
    'salary': 30,
    'married': False,
    'hobbies': ['大人此事必有蹊跷', '如燕', '果然不出大人所料'],
    's': {1, 2, 3, 4, 5, 7}
}
pickle_res = pickle.dumps(dic)
print(pickle_res,type(pickle_res))

运行结果:

b'\x80\x04\x95\x97\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\t\xe6\x9d\x8e\xe5\x85\x83\xe8\x8a\xb3\x94\x8c\x03age\x94K\x1b\x8c\x06salary\x94K\x1e\x8c\x07married\x94\x89\x8c\x07hobbies\x94]\x94(\x8c\x18\xe5\xa4\xa7\xe4\xba\xba\xe6\xad\xa4\xe4\xba\x8b\xe5\xbf\x85\xe6\x9c\x89\xe8\xb9\x8a\xe8\xb7\xb7\x94\x8c\x06\xe5\xa6\x82\xe7\x87\x95\x94\x8c\x18\xe6\x9e\x9c\xe7\x84\xb6\xe4\xb8\x8d\xe5\x87\xba\xe5\xa4\xa7\xe4\xba\xba\xe6\x89\x80\xe6\x96\x99\x94e\x8c\x01s\x94\x8f\x94(K\x01K\x02K\x03K\x04K\x05K\x07\x90u.' <class 'bytes'>

pickle_res = pickle.dumps(dic,protocol=0)  # 防止乱码

with open('data/test.picle',mode='wb') as f:
    f.write(pickle_res)

 运行结果:

with open('data/test1.picle',mode='wb') as f:
    pickle.dump(dic,f,protocol=0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1818681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 6月13日,星期四

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年6月13日 星期四 农历五月初八 1、 财政部&#xff1a;将在19日第一次续发行2024年20年期超长期特别国债。 2、 成本低&#xff0c;商载高&#xff0c;我国自主研制HH-100商用无人运输机首飞成功。 3、 四川甘孜州石渠县1…

水利水电安全员B类精选试题(附答案)

第1题:职业病病人除依法享有工伤保险外&#xff0c;依照有关民事法律&#xff0c;尚有获得赔偿的权利&#xff0c;有权向()提出赔偿要求。 | A.当地人民政府 B.医疗机构 C.企业主管部门 D.用人单位 正确答案:D 第2题:事故预防对策中()是利用法律.规程.标准以及规章制度等必要…

ChatGPT面试指南来袭!10个提示词助你应对自如

面试时刻,你准备充分了吗?许多求职者即将面对的面试,仿佛一场无形的战斗。关键的面试问题,犹如一个个智勇双全的敌人。那么,如何才能在这场战斗中取胜?本文为你提供面试中的十大秘密武器——提示词。正确使用提示词,你可以破解面试官的难题,从容应对各种困境。别小看这十个小…

SpringBoot集成mqtt上下线提醒功能设计

目录 1.首先安装emqx&#xff0c;去官网下载emqx压缩包&#xff0c;并且解压。 2.使用emqx start 命令启动emqx后台管理 3.下载mqttx调试工具&#xff0c;使用mqttx调试mqtt连接。下载地址:MQTTX下载-MQTTX官方版下载,下载完成直接打开&#xff0c;便可进行mqtt连接调试 4.…

ping: www.baidu.com: 未知的名称或服务(IP号不匹配)

我用的是VMware上的Red Hat Enterprise Linux 9&#xff0c;出现了能联网但ping不通外网的情况。 问题描述&#xff1a;设置中显示正常连接&#xff0c;而且虚拟机右上角有联网的图标&#xff0c;但不能通外网。 按照网上教程修改了/etc/resolv.conf和/etc/sysconfig/network-…

公交车载视频监控系统解决方案

公交车载视频监控系统基于iVMS-7200移动视频监控管理平台&#xff0c;通过3G/4G网络接入车载前端&#xff0c;实现实时监控、录像回放、GIS地图定位、轨迹回放、设备状态查询、紧急报警等功能。 车载前端包含车载硬盘录像机(简称车载DVR或MDVR)、车载专用摄像机、车载LCD显示屏…

谷粒商城实战(035 k8s集群学习1-前置介绍)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第339p-第p342的内容 分布式高级篇总结 高可用集群 内容 k8s介绍 为什么使用k8s 组件 master组件 node&#xff08;节点&#xff09;组件 要部…

操作系统——信号

将信号分为以上四个阶段 1.信号注册&#xff1a;是针对信号处理方式的规定&#xff0c;进程收到信号时有三种处理方式&#xff1a;默认动作&#xff0c;忽略&#xff0c;自定义动作。如果不是自定义动作&#xff0c;这一步可以忽略。这个步骤要使用到signal/sigaction接口 2.…

代码随想录算法训练营第五十八天 | 392.判断子序列

392.判断子序列 题目链接&#xff1a;代码随想录 视频讲解&#xff1a;动态规划&#xff0c;用相似思路解决复杂问题 | LeetCode&#xff1a;392.判断子序列_哔哩哔哩_bilibili 解题思路 本题和求最长公共子序列是一样的&#xff0c;值就是s字符串的长度&#xff0c;如果一致…

不吃饭也要搞懂的 git 命令

昨天睿哥布置了一个任务给我&#xff0c;让我学习一下 Git 的一些命令。 我问睿哥&#xff0c;到底我们在实际开发中用哪些命令会比较多&#xff0c;睿哥是这样回答我的&#xff1a; 而且他推荐我用 IDEA 自带的那个 Git 面板来执行 git 命令&#xff0c;他说直接敲命令太麻烦…

一线大厂都在高薪抢AI产品经理?

哈喽&#xff0c;大家下午好呀&#xff5e; 当AI的风吹到产品届&#xff0c;唯叹相见恨晚&#xff01; 作为一名产品经理&#xff0c;日常写调研、需求分析、产品设计、项目管理、数据分析……每一项工作都需要投入大量的时间和精力。 但用上AI后&#xff0c;你会发现写个需…

【面经总结】Java基础 - IO

序列化 什么是序列化和反序列化&#xff1f; 序列化&#xff1a;将对象转换为二进制数据 反序列化&#xff1a;将二进制数据转换为对象 目的&#xff1a;方便网络传输、持久化保存 Java 是怎么实现序列化的&#xff1f; Java 通过对象输入输出流来实现序列化和反序列化&a…

关于docker无法正常下载镜像的问题

文章目录 之前还可以正常下载镜像&#xff0c;但是一段时间之后就无法下载了&#xff0c;猜测可能是政治原因&#xff0c;无法连接到国外服务器&#xff0c;所以我设置了阿里云的镜像加速器。 配置方法如下&#xff1a; 前往阿里云&#xff08;https://help.aliyun.com/zh/acr/…

Windows同一文件夹下支持大小写同名文件

举例&#xff1a;同一文件目录下需要存在A.java, a.java, Windows是不支持的&#xff0c;这时候需要建一个Linux子系统的文件夹 创建教程 1、在启用或关闭Windows功能下面找到 适用于Linux系统的Windows子系统 2、cmd 执行命令 fsutil file SetCaseSensitiveInfo 文件夹路径 …

网格简化技术在AI绘画中的革新应用

随着人工智能技术的飞速发展&#xff0c;AI绘画作为其创新应用领域之一&#xff0c;正逐渐进入公众的视野。AI绘画不仅为艺术家和设计师提供了强大的辅助工具&#xff0c;也为非专业人士开启了艺术创作的大门。然而&#xff0c;高质量的AI绘画往往需要复杂的计算过程&#xff0…

C# WPF入门学习主线篇(二十七)—— 数据源

C# WPF入门学习主线篇&#xff08;二十七&#xff09;—— 数据源 在WPF开发中&#xff0c;数据绑定是一个强大的功能&#xff0c;它允许UI元素和数据源之间进行双向通信。理解和使用数据源对于创建高效和动态的应用程序至关重要。在本文中&#xff0c;我们将详细介绍WPF中的数…

servlet梦想酒店管理系统

梦想酒店管理系统 酒店管理系统分为管理端&#xff0c;和用户端&#xff0c; 用户端可以查看酒店客房&#xff0c;预定酒店系统&#xff0c;查询预定信息。 管理端&#xff1a;用户管理&#xff0c;类型&#xff0c;房间管理&#xff0c;业务管理&#xff0c;统计分析。 技术&…

使用Python保护或加密Excel文件的7种方法

目录 安装Python Excel库 Python 使用文档打开密码保护 Excel 文件 Python 使用文档修改密码保护 Excel 文件 Python 将 Excel 文件标记为最终版本 Python 保护 Excel 工作表 Python 在保护 Excel 工作表的同时允许编辑某些单元格 Python 锁定 Excel 工作表中的特定单元…

Elasticsearch:智能 RAG,获取周围分块

作者&#xff1a;来自 Elastic Sunile Manjee 在检索增强生成 (RAG) 领域&#xff0c;一个持续存在的挑战是找到输入大型语言模型 (LLM) 的最佳数据量。数据太少会导致响应不足或不准确&#xff0c;而数据太多会导致答案模糊。这种微妙的平衡启发我开发了一个专注于智能分块和利…

ssm的疫情物资管理系统

ssm的疫情物资管理系统 功能&#xff1a;前端页面展示 用户端&#xff1a;主页展示&#xff0c;新闻展示&#xff0c;疫情物资&#xff0c;在线留言&#xff0c;全国疫情&#xff0c;健康打卡&#xff0c;注册&#xff0c;登录 后端管理&#xff1a;登录&#xff0c;账号管理…