Python——第五章:json模块
什么是json:
json 模块是用于处理 JSON(JavaScript Object Notation)数据的模块,翻译过来叫js对象简谱。JSON是一种轻量级的数据交换格式,常用于将数据在不同语言之间进行传递。
我们先来看一段json代码:
wf = {
    "name": "汪峰",
    "age": 18,
    "hobby": "上头条",
    "wife": {
        "name": '子怡',
        "age": 19,
        "hobby": ["唱歌","跳舞","演戏"]
    }
}
这个不是字典么?对的,在python里这玩意叫字典,但是在javascript里这东西叫json。一模一样的,我们发现用这样的数据结构可以完美的表示出任何对象,并且可以完整的把对象表示出来,只要代码格式比较好,那可读性也是很强的.所以大家公认用这样一种数据结构作为数据交互的格式.那在这个鬼东西之前是什么呢?来看一段XML代码
<?xml version="1.0" encoding="utf-8" ?>
<wf>
    <name>汪峰</name>
    <age>18</age>
    <hobby>上头条</hobby>
    <wife>
        <name>子怡</name>
        <age>18</age>
        <hobbies>
            <hobby>唱歌</hobby>
            <hobby>跳舞</hobby>
            <hobby>演戏</hobby>
        </hobbies>
    </wife>
</wf>
在过去, web 浏览器和服务器之间的通信,是使用XML(eXtensible Markup Language)做为数据交换的格式。XML具有类似 HTML 的标记语言结构,它的设计目标是提供一种通用的方法来描述和交换结构化数据。
JSON在各种编程语言中都有良好的支持,包括但不限于JavaScript、Python、Java、C#等。这种广泛的支持使得不同语言的系统能够轻松地解析和生成JSON数据,从而实现数据的互通。因为它的简单性、易读性、广泛支持以及在不同语言和环境中的通用性。这使得它成为了一种理想的数据交换格式,连接了前端和后端系统。
在前后端分离的架构中,前端通常通过HTTP请求与后端进行数据交互。JSON作为数据的通用表示形式,可以在前端和后端之间传递、解析和展示数据,促进了前后端的协作和集成。前端可以通过Ajax请求获取JSON格式的数据,然后使用JavaScript轻松地解析和展示这些数据。后端可以接收JSON格式的数据,轻松地将其解析为服务器端的数据结构。
现在大部分的 Web 应用都选择使用 JSON 作为首选的数据交换格式,但仍然存在一些情况下使用 XML 的场景。
为此,我们要学会将json代码和python代码相互转换:
在Python中,json 模块提供了两个主要的操作方法:json.dumps() 和 json.loads()。
json.dumps():把python中的字典或者列表,转化成json字符串
这个方法用于将Python对象转换为JSON格式的字符串。它接受一个Python对象作为参数,然后返回一个包含JSON数据的字符串。例如:import json dic = {
"id": 1,
"name": "我的天啊这么好玩吗",
"usertype": 0
} s = json.dumps(dic, ensure_ascii=False) #json处理中文,要用ensure_ascii=False,以免被ASCII码转化
print(s, type(s)) #运行结果
{"id": 1, "name": "我的天啊这么好玩吗", "usertype": 0} <class 'str'>上述代码将字典
dic转换为JSON字符串。json.loads():前端返回的json字符串,变成python中的字典
这个方法用于将JSON格式的字符串转换为Python对象。它接受一个包含JSON数据的字符串,并返回一个相应的Python对象。例如:import json json_string = '{"id": 1, "name": "我的天啊这么好玩吗", "usertype": 0}'
dic = json.loads(json_string)
print(dic,type(dic)) #运行结果
{'id': 1, 'name': '我的天啊这么好玩吗', 'usertype': 0} <class 'dict'>上述代码将JSON字符串转换为Python字典。
- 变成字典后就方便进行操作和查找了
print(d['name']) 我的天啊这么好玩吗 
json 模块的主要作用在于在不同系统、不同编程语言之间进行数据的传递和交换。由于JSON格式是一种通用的数据表示方式,许多编程语言都支持它,因此它成为了一种方便的数据交换格式。在Python中,json 模块的使用使得将Python对象与JSON之间进行转换变得非常简便。
前端的json和python中的字典有什么区别
d = {"id": 1, "islogin": True, "hasGirl": None}
print(json.dumps(d))
#运行结果
{"id": 1, "islogin": true, "hasGirl": null}
为此我们看到了对比差异:转换的过程还是有代码变换的。包括数据类型的大\小写,和表达方式。
#在Python中
{"id": 1, "islogin": True, "hasGirl": None}
#在Json中
{"id": 1, "islogin": true, "hasGirl": null}
列表一样可以进行这样的转化
lst = ["哈啰", "摩托", True, "春风"]
s = json.dumps(lst, ensure_ascii=False)
print(s, type(s))
#运行结果
["哈啰", "摩托", true, "春风"] <class 'str'>
其他的数据类型,需要做自定义转化。
json模块和pickle模块类似,json.dump()可以直接把字典写入到文件
import json
wf = {
    "name": "汪峰",
    "age": 18,
    "hobby": "上头条",
    "wife": {
        "name": '子怡',
        "age": 19,
        "hobby": ["唱歌", "跳舞", "演戏"]
    }
}
# 写入一个json文件,名字叫wf.txt
with open("wf.txt", mode="w", encoding="utf-8") as file:
    json.dump(wf, file, ensure_ascii=False)
#运行结果
{"name": "汪峰", "age": 18, "hobby": "上头条", "wife": {"name": "子怡", "age": 19, "hobby": ["唱歌", "跳舞", "演戏"]}}
同理json.load()可以直接把文件读出来
d = json.load(open("wf.txt", mode="r", encoding="utf-8"))
print(d, type(d))
#运行结果
{'name': '汪峰', 'age': 18, 'hobby': '上头条', 'wife': {'name': '子怡', 'age': 19, 'hobby': ['唱歌', '跳舞', '演戏']}} <class 'dict'>
JSON记住6个要点
- json是一种数据交互的数据格式
 - 来自于前端
 - dumps ensure_ascii=False
 - loads
 - dump 文件操作 ensure_ascii=False
 - load 文件操作
 
Python——第五章:json模块的更多相关文章
- Python第五章__模块介绍,常用内置模块
		
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
 - 简学Python第五章__模块介绍,常用内置模块
		
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
 - Python 3 中的json模块使用
		
1. 概述 JSON (JavaScript Object Notation)是一种使用广泛的轻量数据格式. Python标准库中的json模块提供了JSON数据的处理功能. Python中一种非常常 ...
 - Python序列化-pickle和json模块
		
Python的“file-like object“就是一种鸭子类型.对真正的文件对象,它有一个read()方法,返回其内容.但是,许多对象,只要有read()方法,都被视为“file-like obj ...
 - Python学习笔记:json模块和pickle模块(数据序列化)
		
Python中的json模块和pickle都是用于数据的序列化和反序列化,它们提供的方法也是一样的:dumps,dump,loads,load dumps(obj):将对象序列化为str. dump( ...
 - 第十五章---JSON
		
目录: (一)介绍 (二)Python 编码为 JSON 类型转换对应表 (三)JSON 解码为 Python 类型转换对应表 (四)实例 正文: (一)介绍 JSON (JavaScript Obj ...
 - Python第五章实验报告
		
一.实验项目名称:<零基础学Python>第五章实战.实例以及两道作业题 二.实验目的和要求:了解和掌握操作字符串的方法和正则表达式的应用 三.实验环境:IDLE(Python 3.9 6 ...
 - 那些年被我坑过的Python——道阻且长(第五章实用模块讲解)
		
random模块 我的随机验证吗程序: 首先保证了字母和数字出现的概率是50% VS 50%,其次是可以订制输出多少位 def Captcha(size): Captcha_list = [] for ...
 - python第五周:模块、标准库
		
模块相关知识: 定义:用来从逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能)本质就是以.py结尾的python文件(文件名:test.py,对应的模块名:test) 附注:包:是用来从 ...
 - 流畅的python第五章一等函数学习记录
		
在python中,函数是一等对象,一等对象是满足以下条件的程序实体 1在运行时创建 2能复制给变量或数据结构的元素 3能作为参数传给函数 4能作为函数的返回结果 高阶函数(接受函数作为参数或者把函数作 ...
 
随机推荐
- TrueUpdate白加黑木马分析保姆级教程
			
目录 TrueUpdate白加黑木马分析保姆级教程 0x00:前言 TrueUpdate是什么? 0x01: TrueUpdate逆向分析解压密码 查壳 脱壳 分金定穴 找到解压密码方法1: 找到解压 ...
 - SSM(Spring+SpringMVC+MyBatis)框架集成
			
引言 进行SSM(Spring+SpringMVC+MyBatis)集成的主要原因是为了提高开发效率和代码可维护性.SSM是一套非常流行的Java Web开发框架,它集成了Spring框架.Sprin ...
 - 实训——基于大数据Hadoop平台的医疗平台项目实战
			
文章目录 医疗平台项目描述 数据每列的含义 数据分析业务需求 架构图 成果图 环境搭建 非常感谢各位的认可,最近太多人找我问东问西,故在此进行说明一下: 首先这个是在Linux上基于Hadoop的搭建 ...
 - 【图像处理】如何使用matplotlib 库显示灰度图像为自定义颜色
			
项目场景 我这里有一张名为airplane.jpg的灰度图像灰度图像 使用 matplotlib 库读取并显示: import matplotlib.pyplot as plt root=" ...
 - UVA10702 Travelling Salesman 题解
			
UVA10702 Travelling Salesman 题解 题面: 有个旅行的商人,他每到一个的新城市,便卖掉所有东西再购买新东西,从而获得利润.从某城市 A 到某城市 B 有固定利润(B 到 ...
 - Regions 题解
			
Regions 这里提供一种时间复杂度不那么优秀但十分好写也好理解的做法. 题目大意 给定一颗 \(n\) 个节点的树,每个节点拥有一个颜色,进行若干次询问,每次询问给出两种颜色 \(A,B\),求所 ...
 - select...for update到底是加了行锁,还是表锁?
			
前言 前几天,知识星球中的一个小伙伴,问了我一个问题:在MySQL中,事务A中使用select...for update where id=1锁住了,某一条数据,事务还没提交,此时,事务B中去用sel ...
 - SNN_LIF模型
			
LIF模型 Leaky integrity-Fire(LIF)模型 输入信号直接影响神经元的状态,即神经元膜电位,只有当膜电位上升到阈值的时候,才会产生输出信号. 膜电位:细胞膜两侧的电位差.只有当膜 ...
 - JS判断点是否在线段上
			
本文利用向量的点积和叉积来判断点是否在线段上. 基础知识补充 从零开始的高中数学--向量.向量的点积.带你一次搞懂点积(内积).叉积(外积).Unity游戏开发--向量运算(点乘和叉乘 说明 点积可以 ...
 - Unity学习笔记--数据持久化之PlayerPrefs的使用
			
数据持久化 PlayerPrefs相关 PlayerPrefs是Unity游戏引擎中的一个类,用于在游戏中存储和访问玩家的偏好设置和数据.它可以用来保存玩家的游戏进度.设置选项.最高分数等信息.Pla ...