导图社区 python-json模块
JSON,是一种数据格式,本质上就是一个字符串,用于网络间(比如爬虫)的数据传输。 本思维导图,先对JSON做了简介,然后重点介绍了json模块的核心功能,并进一步拓展了4个函数功能,以便于在我们拿到JSON格式数据的时候,能够更好的处理,满足我们的需要。 由于本人学识尚浅,导图中难免有不足之处,还望大家批评指正!
编辑于2023-02-20 09:52:08 四川省当运行程序时,数据会以变量、序列或者对象的形式,在程序中临时存储。但当程序运行结束之后,数据也随之消失。如果我们想长期保存数据,那么就需要将数据存储到磁盘文件中,这就需要通过Python读写文件,即I/O操作。I/O操作有三步:1、打开文件;2、文件读写;3、关闭文件(或者编写成with语句)。 本篇思维导图,即是围绕而操作的核心——文件对象(file_obj)来展开讲解,分为2个部分:一、file_obj的创建(open函数);二、file_obj的方法调用(读取文件、写入文件、文件指针以及最后的关闭文件)。 希望通过本篇思维导图,能帮助你对使用Python进行文件读写有更深的理解与认识!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的数字(包含整型、浮点型、复数)。 数字本身的内容不多,重点在其有多样的表现形式。然后,对数字的相关处理方式(运算 函数)。 值得注意的是,整型就是整数,但是,浮点型不等于小数,也表达不了分数。所有针对于小数及分数的运算,补充了Decimal类、Praction类的讲解部分。 最后,对于数字运算有重要关系的math模块,将相关的函数及特殊值进行汇总,希望对大家在用到数学运算的时侯带来帮助。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的文本(即字符串),以“时间顺序”将内容拆解为"创建、引用、操作、输出"四个部分。 1、字符串由引号直接创建,一些特殊的内容需要用到转义字符;当然,还需特别注意引号前的字母,对字符内容存在一定的影响; 2、字符串的引用,同列表一样,即索引与切片;但其属于不可变数据类型,不支持就地更改; 3、字符串的操作按照操作方式,分为“运算、函数、方法”三种方式,其字符串的方法非常丰富,特别将方法进行详细的梳理归纳,以便我们能更好的使用。 4、字符串输出部分,重点讲格式化输出,并对字符呈现起着关键作用的spec字段详细讲解,以便我们的文字内容能够更好的呈现。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
社区模板帮助中心,点此进入>>
当运行程序时,数据会以变量、序列或者对象的形式,在程序中临时存储。但当程序运行结束之后,数据也随之消失。如果我们想长期保存数据,那么就需要将数据存储到磁盘文件中,这就需要通过Python读写文件,即I/O操作。I/O操作有三步:1、打开文件;2、文件读写;3、关闭文件(或者编写成with语句)。 本篇思维导图,即是围绕而操作的核心——文件对象(file_obj)来展开讲解,分为2个部分:一、file_obj的创建(open函数);二、file_obj的方法调用(读取文件、写入文件、文件指针以及最后的关闭文件)。 希望通过本篇思维导图,能帮助你对使用Python进行文件读写有更深的理解与认识!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的数字(包含整型、浮点型、复数)。 数字本身的内容不多,重点在其有多样的表现形式。然后,对数字的相关处理方式(运算 函数)。 值得注意的是,整型就是整数,但是,浮点型不等于小数,也表达不了分数。所有针对于小数及分数的运算,补充了Decimal类、Praction类的讲解部分。 最后,对于数字运算有重要关系的math模块,将相关的函数及特殊值进行汇总,希望对大家在用到数学运算的时侯带来帮助。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的文本(即字符串),以“时间顺序”将内容拆解为"创建、引用、操作、输出"四个部分。 1、字符串由引号直接创建,一些特殊的内容需要用到转义字符;当然,还需特别注意引号前的字母,对字符内容存在一定的影响; 2、字符串的引用,同列表一样,即索引与切片;但其属于不可变数据类型,不支持就地更改; 3、字符串的操作按照操作方式,分为“运算、函数、方法”三种方式,其字符串的方法非常丰富,特别将方法进行详细的梳理归纳,以便我们能更好的使用。 4、字符串输出部分,重点讲格式化输出,并对字符呈现起着关键作用的spec字段详细讲解,以便我们的文字内容能够更好的呈现。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
P
Y
T
H
O
N
JSON 模块
json模块 ~~ load & loads 函数用法
制图人 | 以核为贵 制图时间 | 2023.02.18 制图软件 | MindMaster
json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
核心参数
fp
文件对象,支持read()方法
fp = open(file, 'r')
返回值
python对象
dict, list, tuple, str, int, float
反序列化:从JSON文件(fp)中读取JSON格式数据,并转换为Python对象
json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
核心参数
s
1个包含JSON文档的字符串,字节或字节数组的实例
返回值
python对象
dict, list, tuple, str, int, float
反序列化:将JSON格式数据(s)转换为Python对象
load 与 loads 函数异同
相同点
都会JSON数据格式转换为Python对象,并作为返回值
差异
load
JSON格式数据是从JSON文件读取
loads
JSON格式数据是在程序运行中获取
load & loads 可选参数:cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
cls
处理其他类型(小数,时间……)的数据
class
自定义JSONDecoder 的子类
object_hook
可选函数,用于自定义解码器(即自定义非Python类型的数据结构)
函数
将对象字面量解码的结果作为参数调用这个函数,其返回值用来替代原来的字典
object_pairs_hook
可选函数,用于自定义解码器
函数
将对象字面量解码成一个有序成对(key-value)的列表,再用这个结果作为参数调用这个函数,返回值用来替代原来的字典
如果object_hook和object_pairs_hook同时指定,优先返回object_pairs_hook
parse_float
为float类型的字符串指定解析器
如果该参数被指定,符合float类型的字符串,将被解析为指定的类型
例如
默认
parse_float = float
可修改
parse_foat = decimal.Decimal
parse_int
为int类型的字符串指定解析器
如果该参数被指定,符合int类型的字符串,将被解析为指定的类型
例如
默认
parse_int = int
可修改
parse_int = float
parse_constant
为 -Infinity,Infinity,NaN 这3个值指定解析器
如果该参数被指定,符合int类型的字符串,将被解析为指定的类型
默认是将 -Infinity,Infinity,NaN 分别解析为:-inf, inf, nan
**kw
**kw: 其他关键字参数,用于字典。
在方法中,如果出现*,则表示其后面的参数为命名关键字参数,这是一个特殊的分隔符
json模块 ~~ dump & dumps 函数用法
制图人 | 以核为贵 制图时间 | 2023.02.18 制图软件 | MindMaster
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
核心参数
obj
python对象
dict, list, tuple, str, int, float
fp
文件对象,支持write()方法
fp = open(file, 'w')
序列化:将obj对象转换为JSON格式,然后写入到JSON文件(fp)中
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
核心参数
obj
python对象
dict, list, tuple, str, int, float
返回值
JSON格式字符串
序列化:将obj对象转换为JSON格式字符串
dump 与 dumps 函数异同
相同点
都需要将Python对象转换为JSON数据格式
都涉及到数据转换,可选参数是相同的
差异
dump
将JSON格式数据写入JSON文件,没有返回值
dumps
将JSON格式数据作为返回值,继续在程序中使用
dmup & dumps 可选参数:skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw
indent
处理缩进,美化输出
正整数
按 正整数 * 层级 数量,输出空格
字符串
按 层级 数量,输出字符串
零/负数/""
仅添加换行符
separators
对JSON分隔符(', ', ': ')的处理
tuple
(item_separator, key_separator)
default
用于将其他序列处理为JSON格式的字符串
函数
返回该对象的一个可序列化的版本
或报错:TypeError
sort_keys
对字符输出顺序的处理,默认False
True
字典将按键排序
**kw
**kw: 其他关键字参数,用于字典。
cls
处理其他类型(小数,时间……)的数据
class
自定义JSONEncoder 的子类
allow_nan
对空值 (nan、inf和 -inf) 的处理
bool
True
对应JavaScript等价转换为 NaN、Infinity 和 -Infinity
False
报错:ValueError
check_circular
默认True,表示检验循环引用
False
容器类型的数据结构循环引用检测将被跳过,可能会引发报错: OverflowError(或更糟)
ensure_ascii
对非ASCII字符输出的处理
bool
True
非ASCII字符会被转义
False
非ASCII字符原样输出
skipkeys
对非基本对象的字典的键的处理
基本对象,包括str、int、float、 bool、None
bool
True
跳过
False
报错:TypeError
在方法中,如果出现*,则表示其后面的参数为命名关键字参数,这是一个特殊的分隔符
python - json模块
制图人 | 以核为贵 制图时间 | 2023.02.18 制图软件 | MindMaster
一、json模块 ~~~ 核心功能 (4个函数)
1、文件传输
json.dump()
将数据写入到JSON文件
json.load()
从JSON文件中读取数据
2、格式转换
json.dumps()
将python对象转换为json格式
json.loads()
将json格式数据转换为python对象
json模块,用于python对象与json格式之间的数据转换,以便于和其他语言进行数据传输
二、json模块 ~~~ 文件传输
1
json.dump()
将Python对象写入到JSON文件
json.dump(obj, fp , ensure_ascii=True,allow_nan=True, indent=None, sort_keys=False)
序列化:将obj对象转换为JSON格式,然后写入到JSON文件(fp)中
核心参数
obj
python对象
dict, list, tuple, str, int, float
fp
文件对象,支持write()方法
fp = open(file, 'w')
可选参数
ensure_ascii
确保ASCII编码
非ASCII字符(如中文),会被转义输出
allow_nan
允许空值
indent
缩进
sort_keys
以字典键的顺序,进行排序
2
json.load()
从JSON文件读取数据到Python
json.load( fp)
反序列化:从JSON文件(fp)中读取JSON格式数据,并转换为Python对象
核心参数
fp
文件对象,支持read()方法
fp=open(file, 'r')
返回值
python对象
dict, list, tuple, str, int, float
三、json模块~~~数据格式转换
3
json.dumps()
将Python对象转换为JSON格式
json.dumps(obj, ensure_ascii=True,allow_nan=True, indent=None, sort_keys=False)
序列化:将obj对象转换为JSON格式字符串
核心参数
obj
python对象
dict, list, tuple, str, int, float
可选参数
ensure_ascii
确保ASCII编码
非ASCII字符(如中文),会被转义输出
allow_nan
允许空值
indent
缩进
sort_keys
以字典键的顺序,进行排序
返回值
JSON格式字符串
4
json.loads()
将JSON格式数据转换为Python对象
json.loads(s)
反序列化:将JSON格式数据(s)转换为Python对象
核心参数
s
1个包含JSON文档的字符串,字节或字节数组的实例
返回值
python对象
dict, list, tuple, str, int, float
JSON是一种数据格式,本质上就是一个字符串
JSON 数据格式
制图人 | 以核为贵 制图时间 | 2023.02.18 制图软件 | MindMaster
一、JSON简介
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于任何语言 JSON 具有自我描述性,易于程序员阅读和编写 JSON 使用 JavaScript 语法来描述数据对象,但 JSON 仍然独立于语言和平台。 JSON 解析器和 JSON 库支持许多不同的编程语言,易于计算机解析和生成。
JSON,是一种基于 JavaScript 语言的轻量级的数据交换格式(本质上就是文本字符串,不是编程语言),用于在服务器和客户端之间的数据传输。
JSON具有独立的文件,扩展名为“.json”,用于保存JSON格式的数据。
二、JSON的三种格式 → 对应Python
1、简单值
2、对象值
3、数组值
1、简单值
JSON的简单值的格式对应着JS中的基础数据类型:数字 字符串 布尔值
数字(Number)
py_obj: int, float
字符串(String)
仅支持双引号
py_obj: str
布尔类型(Boolean)
小写:true/false
py_obj: True/False
null类型
py_obj: None
原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
JSON只要涉及到字符串就必须使用双引号,不支持undefined
2、对象值
对象形式:对应着JS中的对象
对象(Object)
py_obj: dict
对象,是一个无序的 '名称/值'对 集合,用 {}(大括号)包裹,{}内以 ,(逗号)分隔
object = {name1:value1, name2:value2, ... nameN:valueN }
name:value
name
对象的名称,必须是双引号字符串
value
值可以是简单值、对象值、数组值
对象最后一个成员的后面,不能加逗号
3、数组值
JSON的数组形式对应着JS中的数组形式
数组(Array)
py_obj: list, tuple
数组,是值(value)的有序集合,用 [](中括号)包裹,[]内以 ,(逗号)分隔
array = [value1, value2, ... valueN]
value
数组的值,可以是简单值、对象值、数组值;
数组最后一个成员的后面,不能加逗号。
复合类型的值,只能是数组或对象, 不能是函数、正则表达式对象、日期对象
JSON是一种数据格式,本质上就是一个字符串
参考资料
1
《Python 编程超级魔卡》(明日科技)
2
python 源代码
3
《Python 常用模块(二):json 模块》(CSDN Amo Xiang)
4
《json的几种标准格式》(CSDN 华为云开发者联盟)
5
《JSON 详解》(CSDN 华为云开发者联盟)
5
《Python中json模块load/loads方法实战以及参数详解》(脚本之家 荒野雄兵)
多学,多练,多思考
Python 单词云 ~~~ json模块
JSON
JavaScript Object Notation
JavaScript对象表示法
方法名
dump
/dʌmp/
转存
dumps
不是dump的第三人称
dump string
load
/loʊd/
加载
loads
不是load的第三人称
load string
数据类型
string/str
/strɪŋ/
字符串
number/num
/ˈnʌmbər/
数字
integer/int
/ˈɪntɪdʒər/
整型
float
/floʊt/
浮点型
null
/nʌl/
空值
NaN
not a number
空值
boolean/bool
/ˈbuːliən/
布尔型
dictionary/dict
/ˈdɪkʃəneri/
字典
name
/neɪm/
名称
key
/kiː/
键
value
/ˈvæljuː/
值
array/arr
/əˈreɪ/
数组
class/cls
/klæs/
类
操作类
skip
/skɪp/
跳过
sort
/sɔːrt/
排序
check
/tʃek/
检查
parse
/pɑːrs/
解析
ensure
/ɪnˈʃʊr/
确认
allow
/əˈlaʊ/
允许
circular
/ˈsɜːrkjələr/
循环的
hook
/hʊk/
挂钩
名称类
object/obj
/ˈɑːbdʒekt/
对象
ascii
American Standard Code for Information Interchange
/ˈæski/
美国信息交换标准码
constant
/ˈkɑːnstənt/
常数
None
/nʌn/
默认值、空值
default
/dɪˈfɔːlt/
默认值
pair
/per/
一对
separator/sep
/ˈsepəreɪtər/
分隔符
indent
/ɪnˈdent/
缩进
kw
key word