当前位置: 首页 > news >正文

Python学习-----模块4.0(json字符串与json模块)

目录

1.json简介:    

 2.json对象

 3.json模块

(1)json.dumps() 函数

 (2)json.dumps() 函数

 (3)json.loads() 函数

 (4) json.load() 函数

 4.总结:


1.json简介:    

        SON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 

        JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构,一是“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

二是值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

 2.json对象

语法格式:

json对象必须在花括号里面,对象可以包括多个键值对,但是跟字典是不一样的,json中的字符串必须用双引号,而Python对象的字典可以单引号也可以双引号

示例:

#json字符串
#json字符串只要是字符串类型的都必须用双引号
{"韩信":"刺客","李白":666,"李信":"A级刮痧师","宫本武藏":123}#json数组
#外面必须要有花括号括起来
{"writer":[{"name":"泰戈尔","country":"India"},{"name":"鲁迅","country":"China"},{"name":"奥斯特洛夫斯基","country":"Russia"}]
}

json对象与Python对象对比 

JSON

Python

object

dict

array

list

string

str

number (integer)

int

number (real)

float

true

True

false

False

null

None

         这里我们可以看出,json字符串与Python的字典非常相似,但是也有不同(上面讲了),所以一般情况下json字符串和Python对象之间的转换是json字符串和字典直接的转换

 3.json模块

json模块只有4种方法:分别是dump、dumps、load、loads,下面我会一一介绍。

 json模块的作用:

1.把Python对象转换为json字符串

2.把json字符串转换为Python对象

导入模块 

import json

(1)json.dumps() 函数

格式:

json.dumps(data,indent,sort_key)

参数说明:data是表示Python中的数据对象,indent是表示格式化空格的数量,sort_key是表示是否进行由小到大排序(布尔变量),如果填入True就表示是,如果天False或者不填就表示否

作用:把Python对象转换为json字符串

示例: 

import json
di={'name':'Jack','age':19,'gander':'male'}
print(di,type(di))
a=json.dumps(di) #获取json字符串对象
print(a,type(a))
#输出结果:{'name': 'Jack', 'age': 19, 'gander': 'male'} <class 'dict'>
#         {"name": "Jack", "age": 19, "gander": "male"} <class 'str'>
import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
print(di,type(di))
a=json.dumps(di,sort_keys=True) #获取json字符串对象
print(a,type(a))
#输出结果:{5: 'Jack', 2: 'Petter', 3: 'John', 1: 'Tom', 4: 'Amy'} <class 'dict'>
#         {"1": "Tom", "2": "Petter", "3": "John", "4": "Amy", "5": "Jack"} <class 'str'>

 (2)json.dumps() 函数

格式:

json.dumps(data,fp,indent)

参数说明:data是表示Python对象或者json对象,fp是表示文件,indent是表示输出格式化(空格的数量)

作用:这个函数是吧一个data数据转换为json字符串,然后再写入fp文件中(如果data是Python对象,那么就会转换为json字符串;如果本身就是json字符串,那结果还是json字符串)

示例1:

import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
with open('kk.json','w',encoding='utf8') as f:json.dump(di,f)#其实这种写法等效于f.write(json.dumps(data))#结果会生成一个json文件,其中就有写入的数据

 这里可以看出写入的数据并不是很好看,没有那种格式化效果

示例2:(设置indent格式化写入)

import json
di={5:'Jack',2:'Petter',3:'John',1:'Tom',4:'Amy'}
with open('kk.json','w',encoding='utf8') as f:json.dump(di,f,indent=4)

 这看上去就舒服多了,所以呢,我们写入文件的时候可以适当设置格式化,增强文件的可读性。

 (3)json.loads() 函数

格式:

json.loads(jsondata)

参数说明:jsondata是表示json对象

作用:把json字符串转换为Python对象(一般是字典)

示例1: 

import json
jsonstr='{"name":"Jack","age":18,"gander":"male","alive":true}'
pythondict=json.loads(jsonstr)
print(pythondict,type(pythondict))
#输出结果:{'name': 'Jack', 'age': 18, 'gander': 'male', 'alive': True} <class 'dict'>

 示例2:

import json
jsonstr='["a","b","c",{"name":"jack","alive":true}]'
pythondict=json.loads(jsonstr)
print(pythondict,type(pythondict))
#输出结果:['a', 'b', 'c', {'name': 'jack', 'alive': True}] <class 'list'>

 (4) json.load() 函数

格式:

json.load(fp)

参数说明:fp是表示json文件

作用:从文件读取数据然后转换为Python对象(其实就跟json.dump反过来就是了),然后返回这个对象

示例:

json文件的内容 


import json
with open('kk.json','r',encoding='utf8') as f:pythondata=json.load(f)#等效于 pythondata=f.read()
print(pythondata,type(pythondata))#输出结果:{'5': 'Jack', '2': 'Petter', '3': 'John', '1': 'Tom', '4': 'Amy'} <class 'dict'>

 4.总结:

方法功能
ison.dump(obj, fp)将python数据类型转换并保存到json格式的文件内.
json.dumps(obj)将python数据类型转换为json格式的字符串。
json.load(fp)从ison格式的文件中读取数据并转换为python的类型
json.loads(s)将json格式的字符串转换为python的类型

 OK,这一期就到这里,下一期我们接着学习~~

送一张壁纸

相关文章:

Python学习-----模块4.0(json字符串与json模块)

目录 1.json简介&#xff1a; 2.json对象 3.json模块 &#xff08;1&#xff09;json.dumps() 函数 &#xff08;2&#xff09;json.dumps() 函数 &#xff08;3&#xff09;json.loads() 函数 (4) json.load() 函数 4.总结&#xff1a; 1.json简介&#xff1a; SON(…...

open3d最大平面检测,平面分割

1.点云读入 读入文件&#xff08;配套点云下载链接&#xff09; # 读取点云 pcd o3d.io.read_point_cloud("point_cloud_00000.ply")配套点云颜色为白色&#xff0c;open3d的点云显示默认背景为白色&#xff0c;所以将点云颜色更改为黑色 pcd.colors o3d.utilit…...

【C++】4.类和对象(下)

1.再谈构造函数 1赋值 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;}private:int _year;int _month;int _day; };构造函数体中的语句只能将其称作为赋初值&#xff0c;而不能称作初始化。因为初始化只能初始化一次&#xf…...

自动驾驶仿真:ECU TEST 、VTD、VERISTAND连接配置

文章目录一、ECU TEST 连接配置简介二、TBC配置 test bench configuration三、TCF配置 test configuration提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、ECU TEST 连接配置简介 1、ECU TEST&#xff08;简称ET&#xff09;&#xff0c;用于HIL仿…...

postgres数据库连接管理

1.连接命令psql -d postgres -h 10.0.0.51. -p 1921 -U postgres&#xff08;-d指定数据库名字&#xff09;2.pg防火墙介绍&#xff08;pg实例层面的权限控制&#xff09;pg_hba.conf文件配置文件分为5部分&#xff1a;配置示例#TYPE DATABASE USER ADDRESS METHODhost all loc…...

【华为OD机试模拟题】用 C++ 实现 - 环中最长子串(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

Spring:@Async 注解和AsyncResult与CompletableFuture使用

Async概述 Spring中用Async注解标记的方法&#xff0c;称为异步方法&#xff0c;它会在调用方的当前线程之外的独立的线程中执行&#xff0c; 其实就相当于我们自己new Thread(()-> System.out.println("hello world !"))这样在另一个线程中去执行相应的业务逻辑…...

tidb ptca,ptcp考证

PingCAP 认证 TiDB 数据库专员 V6 考试&#xff08;2023-02-23&#xff09;https://learn.pingcap.com/learner/exam-market/list?categoryPCTA PingCAP 认证 TiDB 数据库管理专家&#xff08;PCTP - DBA&#xff09;认证考试范围指引 - ☄️ 学习与认证 - TiDB 的问答社区:lo…...

关于用windows开发遇到的各种乌龙事件之node版本管理---nvm install node之后 npm 找不到的问题

友情提醒&#xff0c;开发最好用nvm控制node版本 nrm 控制镜像源&#xff0c;能少掉很多头发开发过程中技术迭代更新的时候最要老命的就是 历史项目的node版本没有记录&#xff0c;导致开启旧项目的时候就会报错。尤其是npm 升级到8.x.x以后&#xff0c;各种版本不兼容。 真…...

JMeter做UI自动化

插件安装搜插件selenium&#xff0c;安装添加config添加线程组右键线程组->添加->配置元件->jpgc - Chrome Driver Configoption和proxy不解释了添加Sampler右键线程组->添加->取样器->jpgc - WebDriver Samplerscript language 选择&#xff1a;JavaScript&…...

Kibana与Elasticsearch

下载与安装Kibanahttps://www.elastic.co/cn/downloads/kibanaKibana的版本与Elasticsearch的版本是一致的&#xff0c;使用方法也和Elasticsearch一致。由于我的英文不是特别好&#xff0c;我们找到config/kibana.yml末尾添加i18n.locale: "zh-CN" &#xff0c;汉化…...

[数据结构]:03-栈(C语言实现)

目录 前言 已完成内容 单链表实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-StackCommon.cpp 04-StackFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容&#xff0c;除其中使用到C引用外&#xff0c;全为C语言代码。使用C引用主要是为了简…...

1W+企业都在用的数字化管理秘籍,快收藏!

企业数字化&#xff0c;绕不开的话题。 随着国家相继出台各种举措助力中小企业数字化转型&#xff0c;积极推动产业数字化转型&#xff0c;培育数字经济新生态&#xff0c;企业想要谋生存&#xff0c;求发展&#xff0c;必然需要做好数字化转型和管理。 本篇文章想跟大家一起…...

多模态机器学习入门——文献阅读(一)Multimodal Machine Learning: A Survey and Taxonomy

文章目录说明论文阅读AbstractIntroductionIntroduction总结Applications&#xff1a;A Historical Perspective补充与总结3 MULTIMODAL REPRESENTATIONS总结Joint Repersentations&#xff08;1&#xff09;总结和附加(一)Joint Repersentations&#xff08;2&#xff09;总结…...

通过哲学家进餐问题学习线程间协作(代码实现以leetcode1226为例)

哲学家进餐问题(代码实现以leetcode1226为例)问题场景解决思路解决死锁问题代码实现cgo(代码实现以leetcode1226为例) 提到多线程和锁解决问题&#xff0c;就想到了os中哲学家进餐问题。 问题场景 回想该问题产生场景&#xff0c;五个哲学家共用一张圆桌&#xff0c;分别坐在…...

消息队列--Kafka

Kafka简介集群部署配置Kafka测试Kafka1.Kafka简介 数据缓冲队列。同时提高了可扩展性。具有峰值处理能力&#xff0c;使用消息队列能够使关键组件顶住突发的访问压力&#xff0c;而不会因为突发的超负荷的请求而完全崩溃。 Kafka是一个分布式、支持分区的&#xff08;partition…...

外盘国际期货:我国当代年轻人结婚逐年下降

我国当代年轻人 结婚现状结婚少了 结婚晚了 2013年后结婚人数逐年下降 结婚少了 离婚多了 结婚年龄越来越迟 以30岁为界线&#xff0c;30岁之后结婚占比逐年增加 2018 20-24岁&#xff1a;435.6万人 25-29岁&#xff1a;736.2万人 30-34岁&#xff1a;314.7万人 35-3…...

Ubuntu 22.04.2 发布,可更新至 Linux Kernel 5.19

Ubuntu 22.04 LTS (Jammy Jellyfish) Ubuntu 22.04.2 发布&#xff0c;可更新至 Linux Kernel 5.19 请访问原文链接&#xff1a;Ubuntu 22.04 LTS (Jammy Jellyfish)&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 发行说…...

论文阅读笔记——《室内服务机器人的实时场景分割算法》

一、主要工作 通过深度可分离卷积、膨胀卷积和通道注意力机制设计轻量级的高准确度特征提取模块。融合浅层特征与深层语义特征获得更丰富的图像特征。在NYUDv2和CamVid数据集上的MIoU分别达到72.7%和59.9%&#xff0c;模型的计算力为4.2GFLOPs&#xff0c;参数量为8.3Mb。 二…...

Hive学习——自定义函数UDFUDTF

目录 一、添加依赖 二、编写自定义UDF函数 (一)自定义首字母大写函数 1.java代码 2.hive中运行 (二)自定义字符串全部小写的函数 1.java代码 2.hive运行 (三)创建解析JSON字符串的函数 1.java代码 三、自定义编写UDTF函数 1.java编写 2.hive运行 虽然Hive中内置了…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法&#xff0c;以下是几种常见的治理方式&#xff1a; 1. 数据质量管理 核心方法&#xff1a; 数据校验&#xff1a;建立数据校验规则&#xff08;格式、范围、一致性等&#xff09;数据清洗&…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...