Python中最值得学习的第三方JSON库

除了使用json模块,Python中还有哪些库可以处理JSON数据? 【代码】除了使用json模块,Python中还有哪些库可以处理JSON数据? 阅读详情

44b1fe8aa8d018f2c0ac4556ded6dc39.png

2aef09bed8be483c57d4799e2cd7ee95.jpeg

❝

本文示例代码及文件在Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

❞

1 简介

大家好,我是菜鸟哥。

我们在日常使用Python的过程中,经常会使用json格式存储一些数据,尤其是在web开发中。而Python原生的json库性能差、功能少,只能堪堪应对简单轻量的json数据存储转换需求。

4ee2b3d523a2a57c6a8709772f8c1103.jpeg

而本文我要给大家介绍的第三方json库orjson,在公开的各项基准性能测试中,以数倍至数十倍的性能优势碾压json、ujson、rapidjson、simplejson等其他Python库,且具有诸多额外功能,下面我们就来领略其常用方法吧~

2 orjson常用方法

orjson支持3.7到3.10所有版本64位的Python,本文演示对应的orjson的版本为3.7.0,直接使用pip install -U orjson即可完成安装。下面我们来对orjson中的常用方法进行演示:

2.1 序列化

与原生json库类似,我们可以使用orjson.dumps()将Python对象序列化为JSON数据,注意,略有不同的是,orjson序列化的结果并不是str型而是bytes型,在下面的例子中,我们对包含一千万个简单字典元素的列表进行序列化,orjson与json库的耗时比较如下:

66ef44eb5a8a4289f4facdb74cbc038e.png

2.2 反序列化

将JSON数据转换为Python对象的过程我们称之为反序列化,使用orjson.loads()进行操作,可接受bytes、str型等常见类型,在前面例子的基础上我们添加反序列化的例子:

01a33fd26f6bc59f665ddd3d0d409382.png

2.3 丰富的option选项

在orjson的序列化操作中,可以通过参数option来配置诸多额外功能,常用的有:

  • OPT_INDENT_2

通过配置option=orjson.OPT_INDENT_2,我们可以为序列化后的JSON结果添加2个空格的缩进美化效果,从而弥补其没有参数indent的不足:

8be8ac904392a8b30a6aa0fd28103805.png
  • OPT_OMIT_MICROSECONDS

orjson.dumps()可以直接将Python中datetime、time等标准库中的日期时间对象转换成相应的字符串,这是原生json库做不到的,而通过配置option=orjson.OPT_OMIT_MICROSECONDS,可以将转换结果后缀的毫秒部分省略掉:

5cf94f33174659dbc39e729bdcf7f07a.png
  • OPT_NON_STR_KEYS

当需要序列化的对象存在非数值型键时,orjson默认会抛出TypeError错误,这时需要配置option=orjson.OPT_NON_STR_KEYS来强制将这些键转换为字符型:

73121a3e5be6ede204bce27af11da250.png
  • OPT_SERIALIZE_NUMPY

orjson的一大重要特性是其可以将包含numpy中数据结构对象的复杂对象,兼容性地转换为JSON中的数组,配合option=orjson.OPT_SERIALIZE_NUMPY即可:

621fba2ed0a6b63800ea0584261d8427.png
  • OPT_SERIALIZE_UUID

除了可以自动序列化numpy对象外,orjson还支持对UUID对象进行转换,在orjson 3.0之前的版本中,需要配合option=orjson.OPT_SERIALIZE_UUID,而本文演示的3.X版本则无需额外配置参数:

6fde5f1a276ff64a2a3380c947089d3a.png
  • OPT_SORT_KEYS

通过配合参数option=orjson.OPT_SORT_KEYS,可以对序列化后的结果自动按照键进行排序:

665979d3dccbf4c2b1b9fb1b017dec6a.png
  • 组合多种option

当你的序列化操作需要涉及多种option功能时,则可以使用|运算符来组合多个option参数即可:

3b0c69f9d492c2eb0886a61e68325d13.png

2.4 针对dataclass、datetime添加自定义处理策略

当你需要序列化的对象中涉及到dataclass自定义数据结构时,可以配合orjson.OPT_PASSTHROUGH_DATACLASS,再通过对default参数传入自定义处理函数,来实现更为自由的数据转换逻辑,譬如下面简单的例子中,我们可以利用此特性进行原始数据的脱敏操作:

7aad0e77301768f090818e320733dda1.png

类似的,针对datetime类型数据,我们同样可以配合OPT_PASSTHROUGH_DATETIME和自定义default函数实现日期自定义格式化转换:

0a9e946b6eea30d9584164fc1472564c.png

orjson更多特性可前往官方仓库https://github.com/ijl/orjson了解更多~

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
(数据科学学习手札137)orjson:Python中最好用的json库 大家好我是费老师,我们在日常使用的过程中,经常会使用格式存储一些数据,尤其是在开发中。而原生的库性能差、功能少,只能堪堪应对简单轻量的数据存储转换需求。   而本文我要给大家介绍的第三方库,在公开的各项基准性能测试中,以数倍至数十倍的性能优势碾压、、、等其他库,且具有诸多额外功能,下面我们就来领略其常用方法吧~支持到所有版本64位的,本文演示对应的的版本为,直接使用即可完成安装。下面我们来对中的常用方法进行演示:与原生库类似,我们可以使用将对象序列化为数据,注意,略有不同的是,序列化的结果并不是型而是型,在 阅读详情

相关推荐

9个最常用的python深度学习库

如果你对深度学习和卷积神经网络感兴趣,但是并不知道从哪里开始,也不知道使用哪种库,那么这里就为你提供了许多帮助。 在这篇文章里,我详细解读了9个我最喜欢的Python深度学习库。 这个名单并不详尽,它只是我在计算机视觉的职业生涯中使用并在某个时间段发现特别有用的一个库的列表。 这其中的一些库我比别人用的多很多,尤其是Keras、mxnet和sklearn-theano。 其他的一些我是间接的使用,比如Theano和TensorFlow(库包括Keras、deepy和Blocks等)。 另外的我只是在一些特别

wx1871428的博客 3923

python之json库

python处理json数据

wenxiaoba的博客 1万+

Python3 JSON库json、orjson、rapidjson loads和dumps速度对比

项目中需要将json字符串反序列化成Python字典对象,但发现原生的json库速度非常慢,就想使用第三方库取代它,发现了orjson和rapidjson两个比较流行的第三方库,测试一下 环境 Python 3.8.6 macOS 11.1 orjson 3.4.6 rapidjson 1.0 介绍 orjson Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy 号称Python下最快的jso

MacwinWin的博客 3256

Python中最好用的json库

大家好,我们在日常使用 的过程中,经常会使用 格式存储一些数据,尤其是在 开发中。而 原生的 库性能差、功能少,只能堪堪应对简单轻量的 数据存储转换需求。而本文我要给大家介绍的第三方 库 ,在公开的各项基准性能测试中,以数倍至数十倍的性能优势碾压 、 、 、 等其他 库,且具有诸多额外功能,下面我们就来领略其常用方法吧~ 支持 到 所有版本64位的 ,本文演示对应的 的版本为 ,直接使用 即可完成安装。下面我们来对 中的常用方法进行演示:与原生 库类似,我们可以使用

m0_59485658的博客 2630

如何用 Python 的 requests 库发送 JSON 数据的 POST 请求

如何用 Python 的 requests 库发送 JSON 数据的 POST 请求

weixin_49376454的博客 1980

Python JSON库学习笔记

介绍python的json库

lxiaoj111的博客 660

Python中最值得学习的第三方 JSON 库

当你需要序列化的对象中涉及到dataclass自定义数据结构时,可以配合,再通过对default参数传入自定义处理函数,来实现更为自由的数据转换逻辑,譬如下面简单的例子中,我们可以利用此特性进行原始数据的脱敏操作类似的,针对datetime类型数据,我们同样可以配合和自定义defaultorjson更多特性可前往官方仓库https了解更多~Python编程学习圈,每日干货分享,发送“J”还可领取大量学习资料,内容覆盖Python电子书、教程、数据库编程、Django,爬虫,云计算等等。或是前往。...

sixqingfeng的博客 867

开源低场MRI系统构建:从原理到三天实现

磁共振成像(MRI)作为现代医学影像的核心技术,其高场强系统存在成本和技术门槛问题。低场MRI通过开源硬件和模块化设计实现技术民主化,采用永磁体替代超导磁体可大幅降低系统复杂度。本文以H型永磁体设计为例,结合MaRCoS开源控制库和PyPulseq脉冲序列工具,展示了如何快速构建教育级MRI系统。关键技术包括遗传算法优化的匀场方案、CNC加工的梯度线圈,以及基于Red Pitaya的SDR控制架构。这种轻量化方案特别适合医学物理教学和脉冲序列开发验证,为MRI技术在资源有限地区的普及提供了新思路。

weixin_30470643的博客 449

2026年GitHub上最值得学习的Python库

2026年GitHub上有很多值得学习的Python库,这些库涵盖了Web开发、数据科学、工具、DevOps、机器学习等多个领域。作为一个非科班转码者,我认为通过学习这些库,可以快速提升自己的Python技能,为就业和项目开发打下坚实的基础。同时,结合Rust的性能优势,可以进一步优化Python应用的性能,为开发高质量的应用提供保障。保持学习,保持输出。虽然现在我还是个菜鸡,但我相信只要坚持,总有一天能成为真正的「第一程序员」!

no1coder的博客 1万+

SAP FICO - 外币交易实战:汇率类型配置与货币换算率管理

月底关账前的外币评估就像财务人的"期末考",OB59配置就是你的备考方案。最低值原则(Lowest value principle)最保守。它会比较原始汇率与评估日汇率,取不利方向确认损失。适合风险厌恶型企业,我在制造业客户中应用最多。重估法(Revalue only)更反映市场现状。无论盈亏都按最新汇率调整,适合交易性金融资产处理。有个基金公司客户就靠这个方法及时反映了外汇波动收益。最小差异金额(Minimum difference)是防骚扰设置。

weixin_42524708的博客 358

unity之——解决利用Jenkins在Windows环境下打包unity工程中的场景为apk包,打包打不出来的问题。并且介绍Jenkins从安装到环境配置,调用unity代码的过程(填坑)!!!!!

今天第一次接触Jenkins,比较头疼。网上的Jenkins配置环境相关的资料比较散乱,并且在Windows平台下相关的配置更是少之又少。我在这里讲一下从Jenkins安装到构建工程。打包unity工程的apk包的过程。 1.首先去Jenkins官网下载安装就不说了,安装完成之后在浏览器中输入http://localhost:8080(默认访问地址)进入Jenkins web界面。进行账号的注册...

cgy56191948的博客 2020

python json库下载_python的JSON库

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。1.json库的使用使用 JSON 函数需要导入 json 库:import json。函数描述json.dumps将 Python 对象编码成 JSON 字符串json.loads将已编码的 JSON 字符串解码为 Python 对象1. json.dumps 将 Python 对...

weixin_39601929的博客 850

仿真每日一练 | Workbench如何在网格节点施加载荷

打开Workbench 2020 R2,在分析系统中双击静力分析工程项目,双击Geometry打开Design Modeler,在菜单栏的单位(Units)修改为毫米(Millimeter),在XY平面创建草图,在草图内绘制矩形并标注尺寸,拉伸长方体,如图1所示。:单个零部件,无连接关系,但需定义一个节点组件,如图5所示,选择Create Named Selection。对添加的节点组件施加Y方向50N的力,如图8所示。1-1-3.有限元系统模型构建。1-1-1.几何模型构建。1-1-2.材料定义。

ansysxuexizhe的博客 1236

Python常用第三方库大全, 值得收藏!

Python的强大之处除了它的简洁易用,最厉害的就是它有着广泛的第三方库支持。今天小编就带你看下Python有哪些常用第三库吧,知道且用过超过10个的欢迎留言~文本处理与格式转换Char...

大江狗 1万+

MPN – 制造商物料编号(延伸)

此外,用户还可以在物料主数据中定义阻止MPN材料的原因,以及在采购订单创建时,是否可以将现有的MPN材料修改为其他MPN材料,从而实现对MPN材料的精细控制和管理。通过使用AMPL,用户可以指定每个MPN材料是否仅能为特定工厂或整个企业所有工厂采购、采购的时间段、是否必须属于特定修订级别、是否只能从特定制造商工厂采购以及是否被阻止及其原因。通过AMPL管理,企业可以规范采购流程,避免使用未经批准的材料,从而提高采购的透明度和效率,同时也为质量控制提供了保障‌。3、QM中的制造商物料。质量信息记录QI01。

yanzibing99的博客 2486

VMware下载与安装

一、VMware下载 二、VMware安装

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 315

Python json库

参考文档: 文档 link json在线校验工具 http://www.bejson.com/ json格式详解 http://www.json.org/json-zh.html 菜鸟教程-python json库 http://www.runoob.com/python/python-json.html python json.d...

weixin_42381854的博客 2963

C# 上位机 YOLO 实战:从数据采集到目标识别的全流程拆解

本文以工业螺栓缺陷检测为例,完整拆解了C#上位机+YOLO从数据采集到目标识别的全流程。数据采集:保证图像质量,线程安全采集,必要时归档数据;预处理:适配YOLO模型输入格式,复用对象减少内存开销;推理解析:正确解析张量结果,过滤低置信度目标;落地环节:可视化展示结果,实现工业交互和日志记录。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1454

【python】Json库学习

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,采用完全独立于语言的文本格式来存储和表示数据。:将Python对象转换为JSON格式的字符串(编码),或者将JSON格式的字符串转换为Python对象(解码)。:能够读取和写入JSON格式的文件。

MAOZI8的博客 1069

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part1项目介绍与环境准备

看到这篇文章的你,相信对知识图谱相关概念不在陌生。知识图谱相关内容在实际开发中包含两个部分:1.知识图谱构建,2.知识图谱使用。知识图谱构建过程中涉及内容、技术都比较多。知识图谱的应用也逐渐在我们的生活中随处可见,其中基于知识图谱的问答系统就是其中的一个应用。基于知识图谱的问答系统称做KGQA(knowledge graph question answer),也有人称其为KBQA(knowledge based question answ).基于知识图谱的问答系统通常是使用的是领域知识图谱。下面就结合Git

让算法融入生活,改变生活! 4718

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python3,听说这个第三方库竟碾压python自带JSON库。

python这个第三方json库的功能还真是强大,不如来见识见识TA...

商务合作 | 面试培训 | 职场规划 ==>主页扫码 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python中的JSON库,详细介绍与代码示例

在我们日常的 Python 编程中,数据的存储与传递是不可避免的一个环节。想象一下,我们在开发一个应用程序时,需要将一些配置信息存储起来,或者要将数据发送到另一个系统中。这时候,我们就需要一种高效、便捷的方式来完成这个。任务JSON(JavaScript Object Notation),作为一种轻量级的数据交换格式,正好能满足我们的需求。而 Python 中的 json 库,则为我们提供了简单易用的接口来处理 JSON 数据。

橙色小博的博客,励志在人工智能领域发光发热! 4747

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 世界上最健康的程序员作息表!
下一篇: 拿到外企offer了!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值