Python标准库之json
Python标准库之json
一、什么是json
- json是一种轻量级的文本数据交换格式
- json独立于其他语言
- json具有自我描述性,更好理解
- json比xml更小、更快,更容易解析
二、json格式
{
"name":"lhh",
"age":"20"
}
name = lhh
age = 20
三、json标准库的作用
-
使用json字符串生成python对象(load)
-
由python对象格式成为json字符串(dump)
四、数据的类型转换
将数据从python转换到json格式,在数据类型上会有什么变化呢,如下表所示:
| Python | JSON | | -------------- | ------ | | dict | object | | list,tuple | array | | str | string | | int,float,int- | number | | True | true | | False | false | | None | null |
五、使用方式
json模块的使用很简单,对于大多数,我们只需要使用以下4中方式:
| 方法 | 功能 | | ------------------ | -------------------------------------------- | | json.dump(obj,fp) | 将python数据类型转换并保存到json格式的文件内 | | json.dumps(obj) | 将python数据类型转换为json格式的字符串 | | json.load(obj) | 将json格式的文件中读取数据并转换为python类型 | | json.load(s) | 将json格式的字符串转换为python的类型 |
六、实战操作
1.python转换为json字符串
#从python对象格式化一个json string
person = {"name":"lhh","age":25}
print(person)
#转换为json字符串
jsonStr = json.dumps(person)
print(jsonStr)
输出:
在python中定义json的时候,可以使用单引号,也可以使用双引号。但是最后在输出的时候,输出的是一个单引号,以字典的方式进行输出的。但是在我们进行json格式转换之后,我们就会变成一个标准的json格式的字符串,即双引号修饰的字符串
2.json文件生成
json.dump(person,open("data.json","w"))
文件输出:
此时输出到文件的时候不是json缩进的格式,此时我们只需要指定参数
indent
就可以输出执行格式
#转换为json字符串
jsonStr = json.dumps(person,indent=4)
print(jsonStr)
json.dump(person,open("data.json","w"),indent=4)
{'name': 'lhh', 'age': 25}
"name": "lhh",
"age": 25
}
此时我们输出到文件中也是个格式化后的结果
3.生成文件的key进行排序
我们需要对我们的key进行排序,即按照字母的顺序进行排序的话,我们只需要指定参数
sort_keys
即可
#转换为json字符串
jsonStr = json.dumps(person,indent=4,sort_keys=True)
print(jsonStr)
json.dump(person,open("data.json","w"),indent=4,sort_keys=True)
我们来看下最后的实际效果:
{'name': 'lhh', 'age': 25}
"age": 25,
"name": "lhh"
}
4.json string 转换成python对象
第一种转换格式
#json string 转换成python对象
# load loads
s = '{"name":"lhh","age":25,"home":["南京","淮安"],"only":true}'
pythonObj = json.loads(s)
print(pythonObj)
print(type(pythonObj))
输出:
{'name': 'lhh', 'age': 25, 'home': ['南京', '淮安'], 'only': True}
<class 'dict'>
第二种转换格式
s2 = '["name","lhh","age",25,{"home":["南京","淮安"],"only":true}]'
pythonObj2 = json.loads(s2)
print(pythonObj2)
print(type(pythonObj2))
输出
['name', 'lhh', 'age', 25, {'home': ['南京', '淮安'], 'only': True}]
<class 'list'>
我们看到两种最后输出的格式是不一样的
5、从文件读取json并生成python对象
#读取json文件
pythondata = json.load(open("data2.json","r"))
print(pythondata)
print(type(pythondata))
文件内容:
{
"age": 25,
"name": "lhh",