活动地址:CSDN21天学习挑战赛
基础概述、json模块:100天精通Python(进阶篇)——第35天:json标准库大总结_无 羡ღ的博客-CSDN博客
JSON(全名:JavaScript Object Notation 对象表示法)是一种轻量级的文本数据交换格式,JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。
JSON独立于语言
JSON具有自我描述性,更易理解
JSON 比 XML 更小、更快,更易解析
语法格式:{key1:value1, key2:value2} 键值对形式(用冒号分开),对间用逗号连接。
- {
- "student":[
- {
- "name":"小明",
- "age":11
- },
- {
- "name":"小红",
- "age":10
- }
- ],
- "classroom":{
- "class1":"room1",
- "class2":"room2"
- }
- }
4.1 作用
1、使用json字符串生成python对象(load)
2、由python对象格式化成为ison字符串(dump)
4.2 数据类型转换
将数据从Python转换到json格式:
Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null
将json格式转化为python内置类型:
JSON Python
object dict
array list
string str
number(int) int
number(real) float
true True
false False
null None
4.3 使用方法
方法 功能
json.dumps(obj) 将python数据类型转换为json格式的字符串。
json.dump(obj, fp) 将python数据类型转换并保存到son格式的文件内。
json.loads(s) 将json格式的字符串转换为python的类型。
json.load(fp) 从json格式的文件中读取数据并转换为python的类型。
4.3.1 json.dumps() 将python数据类型转换为json格式的字符串
语法格式: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)
参数说明:
skipkeys:是否允许JSON字串编码字典对象时,字典的key不是字符串类型(默认是不允许)
indent:定义缩进距离
separators:是一个元组,定义分隔符的类型
sort_keys:是否排序
使用示例:
- >>> import json
-
- # Python字典
- >>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
- >>> print(person)
- {'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
- >>> type(person)
- <class 'dict'
-
- # Python字典转换为json字符串
- >>> jsonStr = json.dumps(person)
- >>> print(jsonStr )
- {"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}
- >>> type(jsonStr)
- <class 'str'>
-
- # 格式化输出
- >>> print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ': ')))
- {
- "age": 30,
- "isonly": true,
- "name": "\u5c0f\u660e",
- "tel": [
- "888888",
- "1351111111"
- ]
- }
-
- # 修改分隔符
- >>> print(json.dumps(person, sort_keys=True, indent=4, separators=('!', '-')))
- {
- "age"-30!
- "isonly"-true!
- "name"-"\u5c0f\u660e"!
- "tel"-[
- "888888"!
- "1351111111"
- ]
- }
-
- # 文件操作
- import json
-
- person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
-
- jsonStr = json.dumps(person)
-
- with open('test.json', 'w', encoding='utf-8') as f: # 打开文件
- f.write(jsonStr) # 在文件里写入转成的json串
4.3.2 json.dump() 将python数据类型转换并保存到son格式的文件内
语法格式: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)
使用示例:
- # 写入文件
- import json
-
- person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
-
- json.dump(person, open('data.json', 'w'))
-
- # 格式化文件内输出
- import json
-
- person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
-
- json.dump(person, open('data.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))
4.3.3 json.dumps和json.dump写入文件的区别
4.3.4 json.loads() 将json格式的字符串转换为python的类型
语法格式:json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
使用示例:
- >>> import json
-
- # Python字典
- >>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
- >>> print(person)
- {'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
- >>> type(person)
- <class 'dict'
-
- # Python字典转换为json字符串
- >>> jsonStr = json.dumps(person)
- >>> print(jsonStr )
- {"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}
- >>> type(jsonStr)
- <class 'str'>
-
- # json字符串再转换为Python字典
- >>> python_obj = json.loads(jsonStr)
- >>> print(python_obj)
- {'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
- >>> print(type(python_obj))
- <class 'dict'>
-
- # 打印字典的所有key
- >>> print(python_obj.keys())
- dict_keys(['name', 'age', 'tel', 'isonly'])
-
- # 打印字典的所有values
- >>> print(python_obj.values())
- dict_values(['小明', 30, ['888888', '1351111111'], True])
-
- # 文件操作
- import json
-
- f = open('data.json', encoding='utf-8')
- content = f.read() # 使用loads()方法需要先读文件
- python_obj = json.loads(content)
- print(python_obj)
4.3.5 json.load() 从json格式的文件中读取数据并转换为python的类型
语法格式:json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
使用示例:
- import json
-
- python_obj = json.load(open('data.json','r'))
- print(python_obj)
- print(type(python_obj))
4.3.5 json.load() 和 json.loads() 区别
暂无
Java实际开发中也经常遇到处理JSON格式字符串的场景,一般都用阿里的fastJson工具。通过本章学习,了解到Python中处理JSON格式数据的常用方法。
暂无,本周找时间把本地环境搭一下,跑跑看。