目录
1、JSON基础概述
JSON独立于语言
JSON具有自我描述性,更易理解
JSON比XML更小、更快、更易解析
2、JSON格式
{
"student":
[
{"name": "小明", "age": 12},
{"name": "小红", "age": 18}
],
"classroom": {"class1": "room1", "class2": "room2"}
}
3、注意事项
1.json的键值对的键部分,必须使用双引号
2.json的键值对的值部分,不允许出现函数function,undefined,NaN,但是可以有null
3.json数据结束后,不允许出现没有意义的逗号
4、json格式总结
{"name": "admin", "age": 18} # JSON对象
# JSON数组
{
"student":
[
{"name": "小明", "age": 12},
{"name": "小红", "age": 18}
],
}
5、JSON模块
5.1 作用
1. 使用json字符串生成python对象(load)
2. 使用python对象格式化称为json字符串(dump)
5.2 数据类型转换
将python转换到json格式,在数据类型上会有变化
dict--object
list,tuple--array
str--string
int,float--number
True--true
False--false
None--null
2.3 使用方法
json.dumps(obj) # 将python数据类型转换为json格式的字符串
json.dump(obj,fp) # 将python数据类型字符串转换并保存到json格式的文件内
json.loads(s) # 将json格式的字符串转换为python的类型
json.load(fp) # 将json格式的文件读取数据并转换为python的类型
2.4 json.dumps()
json格式和python格式区别在于,python格式打印输出是单引号,类型为dict,json格式打印输出为双引号,类型为str。True的开头大小写有区别。
import json
person = {"name": "小明", "age": 18, "tel": ["888888", "13555555555"], "isonly": True}
print(person)
print(type(person))
print(json.dumps(person))
print(type(json.dumps(person)))
使用参数能够哦让json字符串格式化输出
参数解读:
sort_keys # 是否排序
indert # 定义缩进距离
separators # 是一个元组,定义分隔符类型
skipkeys # 是否允许json字符串编码字典对象时,字典的key不是字符串类型(默认不允许)
print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ':')))
import json
person = {"name": "小明", "age": 18, "tel": ["888888", "13555555555"], "isonly": True}
print(person)
print(type(person))
print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ':')))
print(type(json.dumps(person)))
json_str = json.dumps(person)
with open('test.json', 'w', encoding='utf-8') as f:
f.write(json_str)
2.5 json.dump()
将python数据类型转换并保存到json格式文件
person = {"name": "小明", "age": 18, "tel": ["888888", "13555555555"], "isonly": True}
json.dump(person, open('data.json', 'w'), sort_keys=True, indent=4, separators=(',', ':'))
json.dumps()和json.dump写入文件区别
dump()不需要使用.write()方法,只需要写哪个字典,哪个文件即可,而dumps()需要使用.writer()方法写入
如果把字典写到文件里面的时候,dump()好用,但是如果不需要操作文件,或是把内容存储到数据库或excel中,则需要使用dumps()先把字段转化问字符串,再写入。
2.6 json.loads()
将json格式的字符串转换为python的类型
json_str = json.dumps(person, sort_keys=True, indent=4, separators=(',', ':'))
python_dict = json.loads(json_str)
print(python_dict)
print(type(python_dict))
print(python_dict.keys())
print(python_dict.values())
文件操作
f = open('data.json', 'r', encoding='utf-8')
content = f.read()
python_dict = json.loads(content)
print(python_dict)
2.7 json.load()
从json格式的文件中读取数据并转换为python的类型
python_dict = json.load(open('data.json', 'r'))
print(python_dict)
print(type(python_dict))
json.loads和json.load区别:
loads()穿的是json字符串,而load()传的是文件对象
使用loads()时需要先读取文件再使用,而load()不用
3、解析json文件
python_dict = json.load(open('data.json', 'r'))
print(python_dict)
print(type(python_dict))
print(python_dict.keys())
print(python_dict.values())
print(python_dict['age'])