python解析.json文件--json模块(内置)
第一part:json文件的介绍
1)JSON(JavaScript Object Notation) 的含义:
是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。
json是一种通用的数据类型,一般情况下接口返回的数据类型都是json,格式与字典类似,形式也是{key:value},但是json是字符串
字符串不能用key、value来取值,所以要先将其转换为字典。
2)JSON的内容格式:每个参数之间,也是使用逗号隔开,但是最后一个参数不需要加逗号
第二part:python操作json文件的四个方法
python操作json文件,需要导入json模块,json为内置模块,其中主要使用如下四个方法进行操作:
方法 | 描述 |
json.dumps() | 将 Python 对象编码成 JSON 字符串 |
json.loads() | 将已编码的 JSON 字符串解码为 Python 对象 |
json.dump() | 将Python内置类型序列化为json对象后写入文件 |
json.load() | 读取文件中json形式的字符串元素转化为Python类型 |
总结:不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。
第三part:python读取json文件的数据,主要使用json.loads()和json.load()两个方法:
1)json.loads()方法的详细使用
import json
with open ("data2.json") as fp:
result=fp.read()
print("直接读取json文件的内容的类型为:",type(result))
print("将已编码的 JSON字符串解码为 Python对象的值为:",json.loads(result))
print('将json字符串转换为dict:',type(json.loads(result)))
执行结果,如下:
2)json.load()方法的详细使用
import json
with open("data2.json") as fp:
#load获取的数据是字典类型而非字符串;
result=json.load(fp)
print(type(result))
print(result)
执行结果,如下:
第四part:python写入数据到json文件,主要使用json.dumps()和json.dump()两个方法:
1)json.dumps()方法的详细使用
json.dumps()方法与json.loads()方法相对应,将python类型转换为json类型
import json
wri={'username': 'zhangsan', 'age': 22, 'sex': 'male', 'number': 142177753456}
with open ('data2.json','w') as fp:
result=json.dumps(wri)
print(result,type(result))
fp.write(result)
执行结果如下:
2)json.dump()方法的详细使用
json.dump()方法与json.load()方法相对应,将python类型转换为json类型
import json
wri={'username': 'wangwu', 'age': 22, 'sex': 'male', 'number': 142177753456}
with open ('data2.json','w') as fp:
# 现在已经以json格式写进去,具有一个参数indent可以很好的显式json的格式,该参数即可以传入int类型也可以是str类型
json.dump(wri,fp,indent="\t",ensure_ascii=False)
执行结果如下:
第五part:python数据类型与json数据类型的映射关系
Python----------->Json |
Json ----------->Json |
||
dict |
object |
object |
dict |
list, tuple |
array |
array |
list |
str, unicode |
string |
string |
unicode |
int, long, float |
number |
number (int) |
int, long |
True |
true |
number (real) |
float |
False |
false |
true |
True |
None |
null |
false |
False |