Python json模块常用方法

news/2024/11/23 5:32:02/

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,遵循欧洲计算机协会制定的 JavaScript 规范(简称 ECMAScript)。JSON 易于人阅读和编写,同时也易于机器解析和生成,能够有效的提升网信息的传输效率,因此它常被作为网络、程序之间传递信息的标准语言,比如客户端与服务器之间信息交互就是以 JSON 格式传递的。

简单地说,JSON 可以将 JavaScript 对象表示的一组数据转换为字符串格式,以便于在网络、程序间传输这个字符串。并且在需要的时候,您还可以将它转换为编程语言所支持的数据格式。本节主要介绍如何实现 JSON 数据与 Python 数据类型间的相互转换。

Python 语言内置了专门处理 JOSN 数据的模块 —— jons 模块,通过该模块就可以完成 JSON 与 Python 两种数据格式的相互转换。

jons.loads()

该方法可以将 json 格式的字符串转换成 Python 对象(比如列表、字典、元组、整型以及浮点型),其中最常用的是转换为字典类型。示例如下:

# coding:utf8
import json
#JOSN字符串
website_info='{"name" : "c语言中文网","PV" : "50万","UV" : "20万","create_time" : "2010年"}'
py_dict=json.loads(website_info)
print("python字典数据格式:%s;数据类型:%s"% (py_dict,type(py_dict)))

输出结果:

python字典数据格式:{'name': 'c语言中文网', 'PV': '50万', 'UV': '20万', 'create_time': '2010年'};数据类型:<class 'dict'>

注意:上述示例中 JSON 字符串看上去和 Python 字典非常相似,但是其本质不同,JOSN 是字符串类型,而 Python 字典是 dict 类型。

json.dump()

它可以将 Python 对象(字典、列表等)转换为 json 字符串,并将转换后的数据写入到 json 格式的文件中 ,因此该方法必须操作文件流对象。比如当使用爬虫程序完成数据抓取后,有时需要将数据保存为 json 格式,此时就用到了 json.dump() 方法,语法格式如下: 

json.dump(object,f,inden=0,ensure_ascii=False)

参数说明如下:

  • object:Python 数据对象,比如字典,列表等
  • f:文件流对象,即文件句柄。
  • indent:格式化存储数据,使 JSON 字符串更易阅读。
  • ensure_ascii:是否使用 ascii 编码,当数据中出现中文的时候,需要将其设置为 False。

示例示例如下: 

import json
ditc_info={"name" : "c语言中文网","PV" : "50万","UV" : "20万","create_time" : "2010年"}
with open("web.josn","a") as f:json.dump(ditc_info,f,ensure_ascii=False)

打开 web.json 文件,其内容如下所示:

{
"name": "c语言中文网",
"PV": "50万",
"UV": "20万",
"create_time": "2010年"
}

您也可以将 Python 列表转换成 JSON 字符串,并保存至 json 文件中,如下所示:

import json
item_list = []
item = {'website': 'C语言中文网', 'url': "c.biancheng.net"}
for k,v in item.items():item_list.append(v)
with open('info_web.json', 'a') as f:json.dump(item_list, f, ensure_ascii=False)

打开 info_web.json 文件,其内容如下:

["C语言中文网", "c.biancheng.net"]

json.load()

该方法用于操作文件流对象,不过它与 dump() 恰好相反,它表示从  json 文件中读取 JSON 字符串,并将读取内容转换为 Python 对象。使用示例如下:

import json
site = {'name':'c语言中文网',"url":"c.biancheng.net"}
filename = 'website.json'
with open (filename,'w') as f:json.dump(site,f,ensure_ascii=False)
with open (filename,'r') as f:print(json.load(f))

输出结果如下:

{'name': 'c语言中文网', 'url': 'c.biancheng.net'}

json.dumps()

该方法可以将 Python 对象转换成 JSON 字符串。示例如下:

import json
#python字典
item = {'website': 'C语言中文网', 'rank': 1}
# json.dumps之后
item = json.dumps(item,ensure_ascii=False)
print('转换之后的数据类型为:',type(item))
print(item)

输出结果如下:

转换之后的数据类型为: <class 'str'>
{"website": "C语言中文网", "url": "c.biancheng.net"}

最后对上述方法做简单地总结,如下表所示:
 

JSON方法总结
方法作用
json.dumps()将 Python 对象转换成 JSON 字符串。
json.loads()将 JSON 字符串转换成 Python 对象。
json.dump()将 Python 中的对象转化成 JSON 字符串储存到文件中。
json.load()将文件中的 JSON 字符串转化成 Python 对象提取出来。


综上所述 json.load() 与 json.dump() 操作的是文件流对象,实现了 json 文件的读写操作,而 json.loads() 与 json.dumps() 操作的是 Python 对象或者 JOSN 字符串。

 

 

 

 

 

 

 

 


http://www.ppmy.cn/news/238352.html

相关文章

python:使用 GDAL 获取 TIF 影像的 NoData 区域并将其作为掩膜应用于另一个 TIF 数据

作者:CSDN @ _养乐多_ 本文将介绍使用 GDAL 库获取 TIF 影像的 NoData 区域并将其作为掩膜应用于另一个 TIF (所有波段或者单波段)数据。 文章目录 一、掩膜 TIF 影像二、掩膜 NumPy 矩阵一、掩膜 TIF 影像 要使用 GDAL 获取 TIF 影像的 NoData 区域并将其作为掩膜应用于另…

【ARM AMBA AXI 入门 1 - AXI 握手协议】

文章目录 1.1 AXI 双向握手机制简介1.1.1 信号列表1.1.2 双向握手目的1.1.3 握手过程 1.2 数据通路的握手要求1.2.1 读数据通路1.2.2 读地址通路1.2.3 写数据通路1.2.4 写地址通路1.2.5 写回复通路1.2.6 全信号 1.3 不同数据通路间的约束关系1.3.1 读操作约束关系1.3.2 写操作约…

AI实战营第二期——课程目录

AI实战营第二期 第一节 AI实战营第二期 第一节《姿态估计与MMPose》 课程链接&#xff1a;https://www.bilibili.com/video/BV1kk4y1L7Xb/ 课程说明&#xff1a;人体姿态估计&#xff08;Human Pose Estimation&#xff09;是计算机视觉领域中的一个重要研究方向&#xff0c;也…

软件测试之环境搭建—苏汽web系统测试环境搭建

一、搭建环境的准备工作 1、安装好RedHat&#xff0c;输入用户名&#xff1a;root&#xff0c;密码&#xff1a;123456&#xff0c;右键点击桌面&#xff0c;打开终端输入“ifconfig”查询IP地址 2.打开xshell&#xff0c;点击文件&#xff0c;选择新建连接&#xff0c;在输入…

服务器e5v2v3性能差距,服务器CPU中的E3、E5的区别,及V2、V3、V5的区别

E3、E5分别代表入门、高端 Xeon E3是针对工作站和入门级服务器的单路处理器系列&#xff0c;Xeon E5是针对高端工作站及服务器的处理器系列。 但&#xff1a;Xeon E3的更新速度最快&#xff0c;每年跟随消费级的Core i7一同更新。Xeon E5每年更新&#xff0c;不过架构落后Xeon …

Linux教程——常见Linux发行版本有哪些?

新手往往会被 Linux 众多的发行版本搞得一头雾水&#xff0c;我们首先来解释一下这个问题。 从技术上来说&#xff0c;李纳斯•托瓦兹开发的 Linux 只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件&#xff0c;内核并不是一套完整的…

HVV的艺术系列 之 上线的艺术

上线的艺术 很多时候&#xff0c;拿下的机器情况复杂多样。判断其出网性应该是首要工作。 01 到底该不该上线 承认的是&#xff0c;MSF和CS都是及其出色的后渗透工具。但是面对这种复杂多样的环境&#xff0c;上不上线是个我们要去认真考虑的问题&#xff0c;CS和MSF究竟能给我…

2014 年一月联考逻辑真题

2014 年一月联考逻辑真题 (题与解析一致) 真题&#xff08;2014-26&#xff09; 26.随着光纤网络带来的网速大幅度提高&#xff0c;高速下载电影、在线看大片等都不再是困扰我们的问题。即使在社会生产力发展水平较低的国家&#xff0c;人们也可以通过网络随时随地获得最快的信…